Skip to content

Commit

Permalink
Merge pull request #9 from Tiime-PDP/TPDP-247
Browse files Browse the repository at this point in the history
feat(TPDP-247): Add XSD validation
  • Loading branch information
aurelienp-pdp authored Oct 27, 2023
2 parents 6a95eeb + a654e73 commit dc286a6
Show file tree
Hide file tree
Showing 27 changed files with 49,128 additions and 23 deletions.
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
# UniversalBusinessLanguage
# UniversalBusinessLanguage

XSD are from this repository : https://github.com/ConnectingEurope/eInvoicing-EN16931/tree/master/ubl/schema

The XML Schema (XSD) of OASIS UBL 2.1 can be downloaded from OASIS.
The ZIP file is located at http://docs.oasis-open.org/ubl/os-UBL-2.1/UBL-2.1.zip
14 changes: 9 additions & 5 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
{
"name": "tiime/universal-business-language",
"type": "library",
"license": "MIT",
"require": {
"php": "^8.1",
"twig/twig": "^3.7",
"ext-dom": "*",
"tiime/en-16931": "^0.9.0"
"ext-libxml": "*",
"tiime/en-16931": "^0.9.0",
"twig/twig": "^3.7"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.35",
"phpstan/phpstan": "^1.10",
"friendsofphp/php-cs-fixer": "^3.25",
"phpunit/phpunit": "^10.1"
"phpunit/phpunit": "^10.4"
},
"config": {
"sort-packages": true
},
"license": "MIT",
"autoload": {
"psr-4": {
"Tiime\\UniversalBusinessLanguage\\": "src/"
Expand Down
2 changes: 1 addition & 1 deletion src/DataType/Basic/ActualDeliveryDate.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Tiime\UniversalBusinessLanguage\DataType\Basic;

use Tiime\UniversalBusinessLanguage\DataType\Utils\UniversalBusinessLanguageUtils;
use Tiime\UniversalBusinessLanguage\Utils\UniversalBusinessLanguageUtils;

/**
* BT-72.
Expand Down
2 changes: 1 addition & 1 deletion src/DataType/Basic/DueDate.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Tiime\UniversalBusinessLanguage\DataType\Basic;

use Tiime\UniversalBusinessLanguage\DataType\Utils\UniversalBusinessLanguageUtils;
use Tiime\UniversalBusinessLanguage\Utils\UniversalBusinessLanguageUtils;

/**
* BT-9.
Expand Down
2 changes: 1 addition & 1 deletion src/DataType/Basic/EndDate.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Tiime\UniversalBusinessLanguage\DataType\Basic;

use Tiime\UniversalBusinessLanguage\DataType\Utils\UniversalBusinessLanguageUtils;
use Tiime\UniversalBusinessLanguage\Utils\UniversalBusinessLanguageUtils;

/**
* BT-74. or BT-135.
Expand Down
2 changes: 1 addition & 1 deletion src/DataType/Basic/InvoiceDocumentReferenceIssueDate.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Tiime\UniversalBusinessLanguage\DataType\Basic;

use Tiime\UniversalBusinessLanguage\DataType\Utils\UniversalBusinessLanguageUtils;
use Tiime\UniversalBusinessLanguage\Utils\UniversalBusinessLanguageUtils;

/**
* BT-26.
Expand Down
2 changes: 1 addition & 1 deletion src/DataType/Basic/IssueDate.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Tiime\UniversalBusinessLanguage\DataType\Basic;

use Tiime\UniversalBusinessLanguage\DataType\Utils\UniversalBusinessLanguageUtils;
use Tiime\UniversalBusinessLanguage\Utils\UniversalBusinessLanguageUtils;

/**
* BT-2.
Expand Down
2 changes: 1 addition & 1 deletion src/DataType/Basic/StartDate.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Tiime\UniversalBusinessLanguage\DataType\Basic;

use Tiime\UniversalBusinessLanguage\DataType\Utils\UniversalBusinessLanguageUtils;
use Tiime\UniversalBusinessLanguage\Utils\UniversalBusinessLanguageUtils;

/**
* BT-73. or BT-134.
Expand Down
2 changes: 1 addition & 1 deletion src/DataType/Basic/TaxPointDate.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Tiime\UniversalBusinessLanguage\DataType\Basic;

use Tiime\UniversalBusinessLanguage\DataType\Utils\UniversalBusinessLanguageUtils;
use Tiime\UniversalBusinessLanguage\Utils\UniversalBusinessLanguageUtils;

/**
* BT-7.
Expand Down
10 changes: 0 additions & 10 deletions src/DataType/Utils/UniversalBusinessLanguageUtils.php

This file was deleted.

31 changes: 31 additions & 0 deletions src/Utils/UniversalBusinessLanguageUtils.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php

declare(strict_types=1);

namespace Tiime\UniversalBusinessLanguage\Utils;

class UniversalBusinessLanguageUtils
{
public const UBL_DATE_FORMAT = 'Y-m-d';

public const XSD_PATH = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'xsd' . \DIRECTORY_SEPARATOR . 'maindoc' . \DIRECTORY_SEPARATOR . 'UBL-Invoice-2.1.xsd';

/**
* @return array<int, \LibXMLError>
*/
public static function validateXSD(\DOMDocument $xml): array
{
$errors = [];

libxml_use_internal_errors(true);

if (!$xml->schemaValidate(self::XSD_PATH)) {
$errors = libxml_get_errors();
libxml_clear_errors();
}

libxml_use_internal_errors(false);

return $errors;
}
}
9 changes: 9 additions & 0 deletions tests/unit/UniversalBusinessLanguageTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
use Tiime\UniversalBusinessLanguage\DataType\Basic\TaxPointDate;
use Tiime\UniversalBusinessLanguage\Tests\helpers\BaseXMLNodeTestWithHelpers;
use Tiime\UniversalBusinessLanguage\UniversalBusinessLanguage;
use Tiime\UniversalBusinessLanguage\Utils\UniversalBusinessLanguageUtils;

class UniversalBusinessLanguageTest extends BaseXMLNodeTestWithHelpers
{
Expand Down Expand Up @@ -138,4 +139,12 @@ public function testGenerateXml(): void
$generatedOutput = $this->formatXMLOutput();
$this->assertStringEqualsStringIgnoringLineEndings($this->xmlValidContent, $generatedOutput);
}

public function testXmlXsd(): void
{
$this->loadXMLDocument($this->xmlValidContent);
$xsdErrors = UniversalBusinessLanguageUtils::validateXSD($this->document);

$this->assertCount(0, $xsdErrors);
}
}
Loading

0 comments on commit dc286a6

Please sign in to comment.