Reorganizing to a parent project, a light and a heavy (validating) library, a commandline application and the server
This commit is contained in:
110
libraryExtended/History.md
Normal file
110
libraryExtended/History.md
Normal file
@@ -0,0 +1,110 @@
|
||||
|
||||
0.9.0
|
||||
======
|
||||
2020-03-24
|
||||
* ZF 2.1 Schema/Schematrons
|
||||
* check against URI allowing for different fragments
|
||||
* #27 wrong exit code
|
||||
* now context also loggs
|
||||
* introduced fatal errors. new errors: filename empty (10), xml not extractable (17), En16931 CEN Schematron error (24)
|
||||
* fail better if -f missing
|
||||
* validate against CEN 1.3
|
||||
* corrected invalidation of complete output status for broken pdfs
|
||||
* mention filename in report
|
||||
* escape xml in report elements, e.g. < in criterion to become <
|
||||
* validation element has been removed from pdf info and added as attribute in root, duration is now direct child of info
|
||||
* file not found and file too small now without filename
|
||||
* XML pretty print output. (XML report may now contain header <?xml...)
|
||||
* First XMLUnit tests
|
||||
* Better Check of XML Validity also against documents which start with comments or not with xml header <?xml...
|
||||
* prevent accidental CEN EN16931 application on extended profile
|
||||
* solved issues when XML structures start with comments instead of root node
|
||||
* added Symtrax signature
|
||||
|
||||
0.8.3
|
||||
======
|
||||
2019-10-20
|
||||
* #22 rounding errors when applying schematron
|
||||
* check for 1.0 or 2p0 in RDF, not 1.0 and 2.0 like before
|
||||
* updated to zf 2.0.1
|
||||
|
||||
0.8.2
|
||||
======
|
||||
2019-10-10
|
||||
* #22 rounding errors when applying schematron
|
||||
|
||||
0.8.1
|
||||
======
|
||||
2019-09-01
|
||||
|
||||
* added Signature pdfMachine
|
||||
* added check for additional data correctness
|
||||
* #23 ZF2 basic was incorrectly checked against Minimum/Basic Without lines Schema/Schematron
|
||||
* Merged -x and -z to -f
|
||||
* Created ZUGFeRDValidatorClass and MiscValidatorTests for e.g. tests without existing files
|
||||
|
||||
0.8.0
|
||||
======
|
||||
2019-07-08
|
||||
|
||||
* updated Mustang to mitigate #20 zf1 validation does not always return a <xml> section
|
||||
* validate not only against *schematron* but also against *schema* files
|
||||
|
||||
0.7.0
|
||||
======
|
||||
2019-05-31
|
||||
|
||||
* ZUGFeRD 2 final compatible
|
||||
* now displaying number of applied and failed rules
|
||||
* now failing if no rule could be applied at all
|
||||
* profileoverride option no longer needed
|
||||
* version dependent checks for profiles (i.e. comfort is not a valid ZF2 profile!)
|
||||
* allow new ZF2 filename (zugferd-invoice.xml instead ZUGFeRD-invoice.xml)
|
||||
* more JUnit tests
|
||||
* include own version number in XML report
|
||||
|
||||
|
||||
0.6.0
|
||||
=====
|
||||
2019-02-15
|
||||
Factur-X compatible
|
||||
Mention xpath location where the errors occurred
|
||||
JUnit tests
|
||||
new way to collect&handle errors
|
||||
XMP/PDF-A-Schema extension validation
|
||||
|
||||
|
||||
0.5.0
|
||||
=====
|
||||
2018-09-10
|
||||
Non-16931 profiles are no longer automatically (but still can be manually) checked,
|
||||
now writing a log file, attempt to find out which toolkit created that particular file (issue #2),
|
||||
fixing that XML could not be extracted from certain valid PDF/A-3 files (issue #9),
|
||||
added --action parameter (has to be validate), -f option changes to "-o -z", added APL license,
|
||||
added possibility to check XML files only, fixing issues with files that contained a
|
||||
UTF8 BOM in the XML content ("Content not allowed in prolog"),
|
||||
Upgraded VeraPDF-validation from 1.10.5 to 1.12.1
|
||||
|
||||
0.4.3
|
||||
=====
|
||||
2018-03-19
|
||||
|
||||
Java 8 capability (fixes issue #8)
|
||||
|
||||
0.4.2
|
||||
=====
|
||||
2018-03-11
|
||||
POJO embedding VeraPDF: unable to solve some severe deployment issues
|
||||
|
||||
|
||||
0.4.1
|
||||
=====
|
||||
2018-02-12
|
||||
ZUGFeRD 2 public preview EN16931 validation using the schematron files the CEN had
|
||||
published under APL
|
||||
|
||||
|
||||
0.3.0
|
||||
=====
|
||||
2017-07-24
|
||||
First release as VeraPDF plugin
|
||||
201
libraryExtended/LICENSE
Normal file
201
libraryExtended/LICENSE
Normal file
@@ -0,0 +1,201 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright 2018 Jochen Stärk
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
BIN
libraryExtended/MustangGnuaccountingBeispielRE-20170509_505.pdf
Normal file
BIN
libraryExtended/MustangGnuaccountingBeispielRE-20170509_505.pdf
Normal file
Binary file not shown.
198
libraryExtended/README.md
Normal file
198
libraryExtended/README.md
Normal file
@@ -0,0 +1,198 @@
|
||||
# ZUV
|
||||
ZUV (ZUgferd+[VeraPDF](http://VeraPDF.org)) is an open-source e-invoice validator for the [ZUGFeRD](https://www.ferd-net.de/zugferd/specification/index.html)/[Factur-X](http://fnfe-mpe.org/factur-x/) standard.
|
||||
|
||||
It checks both PDF/A-3 compliance (based on VeraPDF) and ZUGFeRD version 1 respectively 2/2.1 XMLs for correctness.
|
||||
The XML check is done by validating against the official ZUGFeRD schematron file for v1 and v2.1 and additionally the EN16931 UN/CEFACT SCRDM v16B uncoupled schematron from the [CEN](https://github.com/CenPC434/validation).
|
||||
|
||||
|
||||
## Build
|
||||
In the pom.xml directory compile the jar with `./mvnw clean package`
|
||||
|
||||
To prepare the schematron files they have to be converted to XSLT files, which is done with a XSLT transformation
|
||||
itself.
|
||||
Get [Saxon](http://saxon.sourceforge.net/#F9.9HE) and the [XSLT](https://github.com/Schematron/stf/tree/master/iso-schematron-xslt2) to convert schematron to XSLT
|
||||
and run
|
||||
`java -jar ./saxon9he.jar -o:minimum.xsl -s:zugferd2p0_basicwl_minimum.sch ./schematron_to_xslt/iso-schematron-xslt2/iso_svrl_for_xslt1.xsl`
|
||||
to do so.
|
||||
|
||||
To create a new en16931 run
|
||||
`
|
||||
git clone https://github.com/ConnectingEurope/eInvoicing-EN16931.git
|
||||
mvn -f pom-xslt.xml package
|
||||
`
|
||||
|
||||
|
||||
|
||||
|
||||
## Run
|
||||
|
||||
To check a file for ZUGFeRD conformance use
|
||||
|
||||
`java -jar ZUV-0.9.0.jar --action validate -f <filename of ZUGFeRD PDF.pdf>`
|
||||
|
||||
You can provide either the complete PDF which will be checked for XML and PDF correctness, or just a XML file, which of course
|
||||
will only be checked for XML correctness.
|
||||
|
||||
|
||||
## Output
|
||||
A valid file looks like this
|
||||
```
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<validation filename="Facture_UE_MINIMUM.pdf" datetime="2020-03-23 12:34:54">
|
||||
<pdf>
|
||||
<report>
|
||||
<buildInformation>
|
||||
<releaseDetails id="core" version="1.12.1" buildDate="2018-05-08T18:57:00+02:00"/>
|
||||
<releaseDetails id="validation-model" version="1.12.1" buildDate="2018-05-08T20:39:00+02:00"/>
|
||||
</buildInformation>
|
||||
<jobs>
|
||||
<job>
|
||||
<item size="101181">
|
||||
<name>/Users/jstaerk/workspace/zugferd/helper_files/../foreign_samples/fx/Facture_UE_MINIMUM.pdf</name>
|
||||
</item>
|
||||
<validationReport profileName="PDF/A-3B validation profile" statement="PDF file is compliant with Validation Profile requirements." isCompliant="true">
|
||||
<details passedRules="123" failedRules="0" passedChecks="11082" failedChecks="0"/>
|
||||
</validationReport>
|
||||
<duration start="1584963295227" finish="1584963296646">00:00:01.419</duration>
|
||||
</job>
|
||||
</jobs>
|
||||
<batchSummary totalJobs="1" failedToParse="0" encrypted="0">
|
||||
<validationReports compliant="1" nonCompliant="0" failedJobs="0">1</validationReports>
|
||||
<featureReports failedJobs="0">0</featureReports>
|
||||
<repairReports failedJobs="0">0</repairReports>
|
||||
<duration start="1584963294997" finish="1584963296679">00:00:01.682</duration>
|
||||
</batchSummary>
|
||||
</report>
|
||||
<info>
|
||||
<signature>Factur/X Python</signature>
|
||||
<duration unit="ms">2361</duration>
|
||||
</info>
|
||||
<summary status="valid"/>
|
||||
</pdf>
|
||||
<xml>
|
||||
<info>
|
||||
<version>2</version>
|
||||
<profile>urn:factur-x.eu:1p0:minimum</profile>
|
||||
<validator version="0.8.4-RESTRICTED"/>
|
||||
<rules>
|
||||
<fired>26</fired>
|
||||
<failed>0</failed>
|
||||
</rules>
|
||||
<duration unit="ms">2772</duration>
|
||||
</info>
|
||||
<summary status="valid"/>
|
||||
</xml>
|
||||
<summary status="valid"/>
|
||||
</validation>
|
||||
```
|
||||
Invalid files with errors e.g. in the XML part can look like this
|
||||
```
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<validation filename="Facture_UE_EXTENDED.pdf" datetime="2020-03-23 12:34:43">
|
||||
<pdf>
|
||||
<report>
|
||||
<buildInformation>
|
||||
<releaseDetails id="core" version="1.12.1" buildDate="2018-05-08T18:57:00+02:00"/>
|
||||
<releaseDetails id="validation-model" version="1.12.1" buildDate="2018-05-08T20:39:00+02:00"/>
|
||||
</buildInformation>
|
||||
<jobs>
|
||||
<job>
|
||||
<item size="109172">
|
||||
<name>/Users/jstaerk/workspace/zugferd/helper_files/../foreign_samples/fx/Facture_UE_EXTENDED.pdf</name>
|
||||
</item>
|
||||
<validationReport profileName="PDF/A-3B validation profile" statement="PDF file is compliant with Validation Profile requirements." isCompliant="true">
|
||||
<details passedRules="123" failedRules="0" passedChecks="11082" failedChecks="0"/>
|
||||
</validationReport>
|
||||
<duration start="1584963283448" finish="1584963284790">00:00:01.342</duration>
|
||||
</job>
|
||||
</jobs>
|
||||
<batchSummary totalJobs="1" failedToParse="0" encrypted="0">
|
||||
<validationReports compliant="1" nonCompliant="0" failedJobs="0">1</validationReports>
|
||||
<featureReports failedJobs="0">0</featureReports>
|
||||
<repairReports failedJobs="0">0</repairReports>
|
||||
<duration start="1584963283223" finish="1584963284825">00:00:01.602</duration>
|
||||
</batchSummary>
|
||||
</report>
|
||||
<info>
|
||||
<signature>Factur/X Python</signature>
|
||||
<duration unit="ms">2296</duration>
|
||||
</info>
|
||||
<summary status="valid"/>
|
||||
</pdf>
|
||||
<xml>
|
||||
<info>
|
||||
<version>2</version>
|
||||
<profile>urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended</profile>
|
||||
<validator version="0.8.4-RESTRICTED"/>
|
||||
<rules>
|
||||
<fired>97</fired>
|
||||
<failed>1</failed>
|
||||
</rules>
|
||||
<duration unit="ms">8546</duration>
|
||||
</info>
|
||||
<messages>
|
||||
<error type="4" location="/*[local-name()='CrossIndustryInvoice' and namespace-uri()='urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100']/*[local-name()='SupplyChainTradeTransaction' and namespace-uri()='urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100']/*[local-name()='ApplicableHeaderTradeSettlement' and namespace-uri()='urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100']/*[local-name()='ApplicableTradeTax' and namespace-uri()='urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100']/*[local-name()='CategoryCode' and namespace-uri()='urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100']" criterion="(/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.</error>
|
||||
</messages>
|
||||
<summary status="invalid"/>
|
||||
</xml>
|
||||
<messages></messages>
|
||||
<summary status="invalid"/>
|
||||
</validation>
|
||||
```
|
||||
|
||||
## Embed
|
||||
|
||||
Feel free to embed this into your java software, send me a PR to use it as a library, or exec it and parse it's output to put on the web.
|
||||
|
||||
For exec, you might try something like
|
||||
```
|
||||
exec('java -Dfile.encoding=UTF-8 -jar /path/to/ZUV-0.9.0.jar --action validate -f '.escapeshellarg($uploadfile).' 2>/dev/null', $output);
|
||||
```
|
||||
* Redirecting stderr away (some logging messages might otherwise disturb XML well formedness)
|
||||
* Escaping any file names in case you use original file names at all (apart from security concerns please take into account that they might contain spaces)
|
||||
* Signal java to use UTF-8 even when otherwise it would not: You might run into trouble with XML files starting with a BOM otherwise and when you exec, keep in mind that you lose all env vars.
|
||||
|
||||
## License
|
||||
|
||||
Permissive Open Source APL2, see LICENSE
|
||||
|
||||
## Codes
|
||||
|
||||
| section | meaning |
|
||||
|---|---|
|
||||
| 1 | file not found |
|
||||
| 2 | additional data schema validation fails |
|
||||
| 3 | xml data not found |
|
||||
| 4 | schematron rule failed |
|
||||
| 5 | file too small |
|
||||
| 6 | VeraPDFException |
|
||||
| 7 | IOException PDF |
|
||||
| 8 | File does not look like PDF nor XML (contains neither %PDF nor <?xml) |
|
||||
| 9 | IOException XML |
|
||||
| 11 | XMP Metadata: ConformanceLevel not found |
|
||||
| 12 | XMP Metadata: ConformanceLevel contains invalid value |
|
||||
| 13 | XMP Metadata: DocumentType not found |
|
||||
| 14 | XMP Metadata: DocumentType invalid |
|
||||
| 15 | XMP Metadata: Version not found |
|
||||
| 16 | XMP Metadata: Version contains invalid value |
|
||||
| 18 | schema validation failed |
|
||||
| 19 | XMP Metadata: DocumentFileName contains invalid value |
|
||||
| 20 | not a pdf |
|
||||
| 21 | XMP Metadata: DocumentFileName not found") |
|
||||
| 22 | generic XML validation exception |
|
||||
| 23 | Not a PDF/A-3 |
|
||||
| 24 | Issues in CEN EN16931 Schematron Check |
|
||||
| 25 | Unsupported profile type |
|
||||
| 26 | No rules matched, XML to minimal? |
|
||||
|
||||
## History
|
||||
|
||||
see the [history file](History.md)
|
||||
|
||||
|
||||
## Authors
|
||||
|
||||
Jochen Staerk "Mustangproject Chief ZUGFeRD amatuer" <jochen@zugferd.org>
|
||||
|
||||
2490
libraryExtended/log/ZUV-2020-03.log
Normal file
2490
libraryExtended/log/ZUV-2020-03.log
Normal file
File diff suppressed because it is too large
Load Diff
310
libraryExtended/mvnw
vendored
Executable file
310
libraryExtended/mvnw
vendored
Executable file
@@ -0,0 +1,310 @@
|
||||
#!/bin/sh
|
||||
# ----------------------------------------------------------------------------
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Maven Start Up Batch script
|
||||
#
|
||||
# Required ENV vars:
|
||||
# ------------------
|
||||
# JAVA_HOME - location of a JDK home dir
|
||||
#
|
||||
# Optional ENV vars
|
||||
# -----------------
|
||||
# M2_HOME - location of maven2's installed home dir
|
||||
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
|
||||
# e.g. to debug Maven itself, use
|
||||
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
|
||||
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
if [ -z "$MAVEN_SKIP_RC" ] ; then
|
||||
|
||||
if [ -f /etc/mavenrc ] ; then
|
||||
. /etc/mavenrc
|
||||
fi
|
||||
|
||||
if [ -f "$HOME/.mavenrc" ] ; then
|
||||
. "$HOME/.mavenrc"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
# OS specific support. $var _must_ be set to either true or false.
|
||||
cygwin=false;
|
||||
darwin=false;
|
||||
mingw=false
|
||||
case "`uname`" in
|
||||
CYGWIN*) cygwin=true ;;
|
||||
MINGW*) mingw=true;;
|
||||
Darwin*) darwin=true
|
||||
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
|
||||
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
|
||||
if [ -z "$JAVA_HOME" ]; then
|
||||
if [ -x "/usr/libexec/java_home" ]; then
|
||||
export JAVA_HOME="`/usr/libexec/java_home`"
|
||||
else
|
||||
export JAVA_HOME="/Library/Java/Home"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -z "$JAVA_HOME" ] ; then
|
||||
if [ -r /etc/gentoo-release ] ; then
|
||||
JAVA_HOME=`java-config --jre-home`
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$M2_HOME" ] ; then
|
||||
## resolve links - $0 may be a link to maven's home
|
||||
PRG="$0"
|
||||
|
||||
# need this for relative symlinks
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG="`dirname "$PRG"`/$link"
|
||||
fi
|
||||
done
|
||||
|
||||
saveddir=`pwd`
|
||||
|
||||
M2_HOME=`dirname "$PRG"`/..
|
||||
|
||||
# make it fully qualified
|
||||
M2_HOME=`cd "$M2_HOME" && pwd`
|
||||
|
||||
cd "$saveddir"
|
||||
# echo Using m2 at $M2_HOME
|
||||
fi
|
||||
|
||||
# For Cygwin, ensure paths are in UNIX format before anything is touched
|
||||
if $cygwin ; then
|
||||
[ -n "$M2_HOME" ] &&
|
||||
M2_HOME=`cygpath --unix "$M2_HOME"`
|
||||
[ -n "$JAVA_HOME" ] &&
|
||||
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
||||
[ -n "$CLASSPATH" ] &&
|
||||
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
|
||||
fi
|
||||
|
||||
# For Mingw, ensure paths are in UNIX format before anything is touched
|
||||
if $mingw ; then
|
||||
[ -n "$M2_HOME" ] &&
|
||||
M2_HOME="`(cd "$M2_HOME"; pwd)`"
|
||||
[ -n "$JAVA_HOME" ] &&
|
||||
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
|
||||
fi
|
||||
|
||||
if [ -z "$JAVA_HOME" ]; then
|
||||
javaExecutable="`which javac`"
|
||||
if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
|
||||
# readlink(1) is not available as standard on Solaris 10.
|
||||
readLink=`which readlink`
|
||||
if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
|
||||
if $darwin ; then
|
||||
javaHome="`dirname \"$javaExecutable\"`"
|
||||
javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
|
||||
else
|
||||
javaExecutable="`readlink -f \"$javaExecutable\"`"
|
||||
fi
|
||||
javaHome="`dirname \"$javaExecutable\"`"
|
||||
javaHome=`expr "$javaHome" : '\(.*\)/bin'`
|
||||
JAVA_HOME="$javaHome"
|
||||
export JAVA_HOME
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$JAVACMD" ] ; then
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
else
|
||||
JAVACMD="`which java`"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
echo "Error: JAVA_HOME is not defined correctly." >&2
|
||||
echo " We cannot execute $JAVACMD" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$JAVA_HOME" ] ; then
|
||||
echo "Warning: JAVA_HOME environment variable is not set."
|
||||
fi
|
||||
|
||||
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
|
||||
|
||||
# traverses directory structure from process work directory to filesystem root
|
||||
# first directory with .mvn subdirectory is considered project base directory
|
||||
find_maven_basedir() {
|
||||
|
||||
if [ -z "$1" ]
|
||||
then
|
||||
echo "Path not specified to find_maven_basedir"
|
||||
return 1
|
||||
fi
|
||||
|
||||
basedir="$1"
|
||||
wdir="$1"
|
||||
while [ "$wdir" != '/' ] ; do
|
||||
if [ -d "$wdir"/.mvn ] ; then
|
||||
basedir=$wdir
|
||||
break
|
||||
fi
|
||||
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
|
||||
if [ -d "${wdir}" ]; then
|
||||
wdir=`cd "$wdir/.."; pwd`
|
||||
fi
|
||||
# end of workaround
|
||||
done
|
||||
echo "${basedir}"
|
||||
}
|
||||
|
||||
# concatenates all lines of a file
|
||||
concat_lines() {
|
||||
if [ -f "$1" ]; then
|
||||
echo "$(tr -s '\n' ' ' < "$1")"
|
||||
fi
|
||||
}
|
||||
|
||||
BASE_DIR=`find_maven_basedir "$(pwd)"`
|
||||
if [ -z "$BASE_DIR" ]; then
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
##########################################################################################
|
||||
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
|
||||
# This allows using the maven wrapper in projects that prohibit checking in binary data.
|
||||
##########################################################################################
|
||||
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Found .mvn/wrapper/maven-wrapper.jar"
|
||||
fi
|
||||
else
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
|
||||
fi
|
||||
if [ -n "$MVNW_REPOURL" ]; then
|
||||
jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
|
||||
else
|
||||
jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
|
||||
fi
|
||||
while IFS="=" read key value; do
|
||||
case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
|
||||
esac
|
||||
done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Downloading from: $jarUrl"
|
||||
fi
|
||||
wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
|
||||
if $cygwin; then
|
||||
wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
|
||||
fi
|
||||
|
||||
if command -v wget > /dev/null; then
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Found wget ... using wget"
|
||||
fi
|
||||
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
|
||||
wget "$jarUrl" -O "$wrapperJarPath"
|
||||
else
|
||||
wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
|
||||
fi
|
||||
elif command -v curl > /dev/null; then
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Found curl ... using curl"
|
||||
fi
|
||||
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
|
||||
curl -o "$wrapperJarPath" "$jarUrl" -f
|
||||
else
|
||||
curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
|
||||
fi
|
||||
|
||||
else
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Falling back to using Java to download"
|
||||
fi
|
||||
javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
|
||||
# For Cygwin, switch paths to Windows format before running javac
|
||||
if $cygwin; then
|
||||
javaClass=`cygpath --path --windows "$javaClass"`
|
||||
fi
|
||||
if [ -e "$javaClass" ]; then
|
||||
if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo " - Compiling MavenWrapperDownloader.java ..."
|
||||
fi
|
||||
# Compiling the Java class
|
||||
("$JAVA_HOME/bin/javac" "$javaClass")
|
||||
fi
|
||||
if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
|
||||
# Running the downloader
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo " - Running MavenWrapperDownloader.java ..."
|
||||
fi
|
||||
("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
##########################################################################################
|
||||
# End of extension
|
||||
##########################################################################################
|
||||
|
||||
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo $MAVEN_PROJECTBASEDIR
|
||||
fi
|
||||
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin; then
|
||||
[ -n "$M2_HOME" ] &&
|
||||
M2_HOME=`cygpath --path --windows "$M2_HOME"`
|
||||
[ -n "$JAVA_HOME" ] &&
|
||||
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
|
||||
[ -n "$CLASSPATH" ] &&
|
||||
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
|
||||
[ -n "$MAVEN_PROJECTBASEDIR" ] &&
|
||||
MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
|
||||
fi
|
||||
|
||||
# Provide a "standardized" way to retrieve the CLI args that will
|
||||
# work with both Windows and non-Windows executions.
|
||||
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
|
||||
export MAVEN_CMD_LINE_ARGS
|
||||
|
||||
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
|
||||
|
||||
exec "$JAVACMD" \
|
||||
$MAVEN_OPTS \
|
||||
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
|
||||
"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
|
||||
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
|
||||
182
libraryExtended/mvnw.cmd
vendored
Normal file
182
libraryExtended/mvnw.cmd
vendored
Normal file
@@ -0,0 +1,182 @@
|
||||
@REM ----------------------------------------------------------------------------
|
||||
@REM Licensed to the Apache Software Foundation (ASF) under one
|
||||
@REM or more contributor license agreements. See the NOTICE file
|
||||
@REM distributed with this work for additional information
|
||||
@REM regarding copyright ownership. The ASF licenses this file
|
||||
@REM to you under the Apache License, Version 2.0 (the
|
||||
@REM "License"); you may not use this file except in compliance
|
||||
@REM with the License. You may obtain a copy of the License at
|
||||
@REM
|
||||
@REM http://www.apache.org/licenses/LICENSE-2.0
|
||||
@REM
|
||||
@REM Unless required by applicable law or agreed to in writing,
|
||||
@REM software distributed under the License is distributed on an
|
||||
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
@REM KIND, either express or implied. See the License for the
|
||||
@REM specific language governing permissions and limitations
|
||||
@REM under the License.
|
||||
@REM ----------------------------------------------------------------------------
|
||||
|
||||
@REM ----------------------------------------------------------------------------
|
||||
@REM Maven Start Up Batch script
|
||||
@REM
|
||||
@REM Required ENV vars:
|
||||
@REM JAVA_HOME - location of a JDK home dir
|
||||
@REM
|
||||
@REM Optional ENV vars
|
||||
@REM M2_HOME - location of maven2's installed home dir
|
||||
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
|
||||
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
|
||||
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
|
||||
@REM e.g. to debug Maven itself, use
|
||||
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
|
||||
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
|
||||
@REM ----------------------------------------------------------------------------
|
||||
|
||||
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
|
||||
@echo off
|
||||
@REM set title of command window
|
||||
title %0
|
||||
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
|
||||
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
|
||||
|
||||
@REM set %HOME% to equivalent of $HOME
|
||||
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
|
||||
|
||||
@REM Execute a user defined script before this one
|
||||
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
|
||||
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
|
||||
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
|
||||
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
|
||||
:skipRcPre
|
||||
|
||||
@setlocal
|
||||
|
||||
set ERROR_CODE=0
|
||||
|
||||
@REM To isolate internal variables from possible post scripts, we use another setlocal
|
||||
@setlocal
|
||||
|
||||
@REM ==== START VALIDATION ====
|
||||
if not "%JAVA_HOME%" == "" goto OkJHome
|
||||
|
||||
echo.
|
||||
echo Error: JAVA_HOME not found in your environment. >&2
|
||||
echo Please set the JAVA_HOME variable in your environment to match the >&2
|
||||
echo location of your Java installation. >&2
|
||||
echo.
|
||||
goto error
|
||||
|
||||
:OkJHome
|
||||
if exist "%JAVA_HOME%\bin\java.exe" goto init
|
||||
|
||||
echo.
|
||||
echo Error: JAVA_HOME is set to an invalid directory. >&2
|
||||
echo JAVA_HOME = "%JAVA_HOME%" >&2
|
||||
echo Please set the JAVA_HOME variable in your environment to match the >&2
|
||||
echo location of your Java installation. >&2
|
||||
echo.
|
||||
goto error
|
||||
|
||||
@REM ==== END VALIDATION ====
|
||||
|
||||
:init
|
||||
|
||||
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
|
||||
@REM Fallback to current working directory if not found.
|
||||
|
||||
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
|
||||
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
|
||||
|
||||
set EXEC_DIR=%CD%
|
||||
set WDIR=%EXEC_DIR%
|
||||
:findBaseDir
|
||||
IF EXIST "%WDIR%"\.mvn goto baseDirFound
|
||||
cd ..
|
||||
IF "%WDIR%"=="%CD%" goto baseDirNotFound
|
||||
set WDIR=%CD%
|
||||
goto findBaseDir
|
||||
|
||||
:baseDirFound
|
||||
set MAVEN_PROJECTBASEDIR=%WDIR%
|
||||
cd "%EXEC_DIR%"
|
||||
goto endDetectBaseDir
|
||||
|
||||
:baseDirNotFound
|
||||
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
|
||||
cd "%EXEC_DIR%"
|
||||
|
||||
:endDetectBaseDir
|
||||
|
||||
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
|
||||
|
||||
@setlocal EnableExtensions EnableDelayedExpansion
|
||||
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
|
||||
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
|
||||
|
||||
:endReadAdditionalConfig
|
||||
|
||||
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
|
||||
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
|
||||
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
|
||||
|
||||
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
|
||||
|
||||
FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
|
||||
IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
|
||||
)
|
||||
|
||||
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
|
||||
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
|
||||
if exist %WRAPPER_JAR% (
|
||||
if "%MVNW_VERBOSE%" == "true" (
|
||||
echo Found %WRAPPER_JAR%
|
||||
)
|
||||
) else (
|
||||
if not "%MVNW_REPOURL%" == "" (
|
||||
SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
|
||||
)
|
||||
if "%MVNW_VERBOSE%" == "true" (
|
||||
echo Couldn't find %WRAPPER_JAR%, downloading it ...
|
||||
echo Downloading from: %DOWNLOAD_URL%
|
||||
)
|
||||
|
||||
powershell -Command "&{"^
|
||||
"$webclient = new-object System.Net.WebClient;"^
|
||||
"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
|
||||
"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
|
||||
"}"^
|
||||
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
|
||||
"}"
|
||||
if "%MVNW_VERBOSE%" == "true" (
|
||||
echo Finished downloading %WRAPPER_JAR%
|
||||
)
|
||||
)
|
||||
@REM End of extension
|
||||
|
||||
@REM Provide a "standardized" way to retrieve the CLI args that will
|
||||
@REM work with both Windows and non-Windows executions.
|
||||
set MAVEN_CMD_LINE_ARGS=%*
|
||||
|
||||
%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
|
||||
if ERRORLEVEL 1 goto error
|
||||
goto end
|
||||
|
||||
:error
|
||||
set ERROR_CODE=1
|
||||
|
||||
:end
|
||||
@endlocal & set ERROR_CODE=%ERROR_CODE%
|
||||
|
||||
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
|
||||
@REM check for post script, once with legacy .bat ending and once with .cmd ending
|
||||
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
|
||||
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
|
||||
:skipRcPost
|
||||
|
||||
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
|
||||
if "%MAVEN_BATCH_PAUSE%" == "on" pause
|
||||
|
||||
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
|
||||
|
||||
exit /B %ERROR_CODE%
|
||||
252
libraryExtended/pom.xml
Normal file
252
libraryExtended/pom.xml
Normal file
@@ -0,0 +1,252 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<groupId>org.mustangproject</groupId>
|
||||
<artifactId>core</artifactId>
|
||||
<version>2.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.mustangproject</groupId>
|
||||
<artifactId>libraryExtended</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<version>2.0.0-SNAPSHOT</version>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>mavencentral</id>
|
||||
<url>http://repo.maven.apache.org/maven2</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<!-- for jargs -->
|
||||
<id>sonatype-oss-public</id>
|
||||
<url>https://oss.sonatype.org/content/groups/public/</url>
|
||||
<releases>
|
||||
<enabled>true</enabled>
|
||||
</releases>
|
||||
<snapshots>
|
||||
<enabled>true</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
</repositories>
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<!-- for java9 -->
|
||||
<dependency>
|
||||
<groupId>javax.xml.bind</groupId>
|
||||
<artifactId>jaxb-api</artifactId>
|
||||
<version>2.1</version>
|
||||
</dependency>
|
||||
<!-- for xml pretty print -->
|
||||
<dependency>
|
||||
<groupId>org.dom4j</groupId>
|
||||
<artifactId>dom4j</artifactId>
|
||||
<version>2.1.1</version>
|
||||
</dependency>
|
||||
<!-- for ph-schematron -->
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-classic</artifactId>
|
||||
<version>1.2.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-core</artifactId>
|
||||
<version>1.2.3</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/com.googlecode.slf4j-maven-plugin-log/slf4j-maven-plugin-log -->
|
||||
<dependency>
|
||||
<groupId>com.googlecode.slf4j-maven-plugin-log</groupId>
|
||||
<artifactId>slf4j-maven-plugin-log</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
<!-- Verapdf plugin <dependency> <groupId>org.verapdf</groupId> <artifactId>core</artifactId>
|
||||
<version>1.6.2</version> </dependency> -->
|
||||
<!-- embedded verapdf -->
|
||||
<dependency>
|
||||
<groupId>org.verapdf</groupId>
|
||||
<artifactId>validation-model</artifactId>
|
||||
<version>1.12.1</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/com.helger/ph-schematron -->
|
||||
<dependency>
|
||||
<groupId>com.helger</groupId>
|
||||
<artifactId>ph-schematron</artifactId>
|
||||
<version>5.0.8</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mustangproject</groupId>
|
||||
<artifactId>libraryBasic</artifactId>
|
||||
<version>2.0.0-SNAPSHOT</version>
|
||||
<!-- prototypes of new mustangproject versions can be installed by referring to them and installed to the local repo from a jar file with
|
||||
mvn install:install-file -Dfile=mustang-1.5.4-SNAPSHOT.jar -DgroupId=org.mustangproject.ZUGFeRD -DartifactId=mustang -Dversion=1.5.4 -Dpackaging=jar -DgeneratePom=true
|
||||
-->
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.xmlunit</groupId>
|
||||
<artifactId>xmlunit-core</artifactId>
|
||||
<version>2.6.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.xmlunit</groupId>
|
||||
<artifactId>xmlunit-assertj</artifactId>
|
||||
<version>2.6.3</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<!-- for commandline options -->
|
||||
<groupId>com.sanityinc</groupId>
|
||||
<artifactId>jargs</artifactId>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.riversun</groupId>
|
||||
<artifactId>bigdoc</artifactId>
|
||||
<version>0.3.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.12</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<!-- mvn help:effective-pom will otherwise tell it just defaults
|
||||
to 2.3.2 - which does not release in the maven repo, and neither shows any
|
||||
error message :-( -->
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-release-plugin</artifactId>
|
||||
<version>2.5.3</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
<plugins>
|
||||
<!-- allow getImplementationVersion for the pom.xml -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
|
||||
</manifest>
|
||||
</archive>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<!-- ZUV -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>2.3.2</version>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<addClasspath>true</addClasspath>
|
||||
<mainClass>ZUV.main</mainClass>
|
||||
</manifest>
|
||||
</archive>
|
||||
<descriptorRefs>
|
||||
<descriptorRef>jar-with-dependencies</descriptorRef>
|
||||
</descriptorRefs>
|
||||
<!-- http://stackoverflow.com/questions/574594/how-can-i-create-an-executable-jar-with-dependencies-using-maven
|
||||
mvn clean compile assembly:single -->
|
||||
<!-- or whatever version you use -->
|
||||
<source>1.7</source>
|
||||
<target>1.7</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<!-- /ZUV -->
|
||||
<!-- generate XSLT files from schematron upon build (goal convert is part
|
||||
of the preparation of the "package" step)
|
||||
<plugin> <groupId>com.helger.maven</groupId> <artifactId>ph-sch2xslt-maven-plugin</artifactId>
|
||||
<version>5.0.8</version> <configuration> <schematronDirectory>${basedir}/src/main/resources/</schematronDirectory>
|
||||
<xsltDirectory>${basedir}/src/main/resources/xslt</xsltDirectory> </configuration>
|
||||
<executions> <execution> <goals> <goal>convert</goal> </goals> </execution>
|
||||
</executions> </plugin> -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>2.4.3</version>
|
||||
<configuration>
|
||||
<transformers>
|
||||
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
|
||||
<mainClass>ZUV.Main</mainClass>
|
||||
</transformer>
|
||||
</transformers>
|
||||
<minimizeJar>false</minimizeJar>
|
||||
<filters>
|
||||
<filter>
|
||||
<artifact>*:*</artifact>
|
||||
<excludes>
|
||||
<exclude>META-INF/*.SF</exclude>
|
||||
<exclude>META-INF/*.DSA</exclude>
|
||||
<exclude>META-INF/*.RSA</exclude>
|
||||
</excludes>
|
||||
</filter>
|
||||
<filter>
|
||||
<artifact>log4j:log4j</artifact>
|
||||
<includes>
|
||||
<include>**</include>
|
||||
</includes>
|
||||
</filter>
|
||||
<filter>
|
||||
<artifact>commons-logging:commons-logging</artifact>
|
||||
<includes>
|
||||
<include>**</include>
|
||||
</includes>
|
||||
</filter>
|
||||
<filter>
|
||||
<artifact>com.sun.xml.bind:jaxb-impl</artifact>
|
||||
<includes>
|
||||
<include>**</include>
|
||||
</includes>
|
||||
</filter>
|
||||
<filter>
|
||||
<artifact>com.sun.xml.bind:jaxb-core</artifact>
|
||||
<includes>
|
||||
<include>**</include>
|
||||
</includes>
|
||||
</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>shade</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<artifactSet>
|
||||
<excludes />
|
||||
</artifactSet>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<licenses>
|
||||
<license>
|
||||
<name>Apache License, Version 2.0</name>
|
||||
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
|
||||
<distribution>repo</distribution>
|
||||
<comments>A business-friendly OSS license</comments>
|
||||
</license>
|
||||
</licenses>
|
||||
<developers>
|
||||
<developer>
|
||||
<name>Jochen Stärk</name>
|
||||
<email>jstaerk@usegroup.de</email>
|
||||
<roles>
|
||||
<role>architect</role>
|
||||
<role>developer</role>
|
||||
</roles>
|
||||
</developer>
|
||||
</developers>
|
||||
</project>
|
||||
5
libraryExtended/src/main/java/ZUV/EPart.java
Normal file
5
libraryExtended/src/main/java/ZUV/EPart.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package ZUV;
|
||||
|
||||
public enum EPart {
|
||||
xml, pdf, none
|
||||
}
|
||||
5
libraryExtended/src/main/java/ZUV/ESeverity.java
Normal file
5
libraryExtended/src/main/java/ZUV/ESeverity.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package ZUV;
|
||||
|
||||
public enum ESeverity {
|
||||
notice, warning, error, fatal, exception
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package ZUV;
|
||||
|
||||
public class IrrecoverableValidationError extends Exception {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
public IrrecoverableValidationError(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
}
|
||||
92
libraryExtended/src/main/java/ZUV/Main.java
Normal file
92
libraryExtended/src/main/java/ZUV/Main.java
Normal file
@@ -0,0 +1,92 @@
|
||||
package ZUV;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.sanityinc.jargs.CmdLineParser;
|
||||
import com.sanityinc.jargs.CmdLineParser.Option;
|
||||
|
||||
public class Main {
|
||||
|
||||
static final ClassLoader cl = Main.class.getClassLoader();
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(Main.class.getCanonicalName()); // log output is
|
||||
// ignored for the
|
||||
// time being
|
||||
|
||||
public void run(String[] args) {
|
||||
|
||||
/***
|
||||
* prerequisite is a mvn generate-resources
|
||||
*/
|
||||
|
||||
CmdLineParser parser = new CmdLineParser();
|
||||
Option<String> actionOption = parser.addStringOption('a', "action");
|
||||
Option<String> filenameOption = parser.addStringOption('f', "Filename");
|
||||
|
||||
Option<Boolean> licenseOption = parser.addBooleanOption('l', "license");
|
||||
Option<Boolean> helpOption = parser.addBooleanOption('h', "help");
|
||||
|
||||
boolean optionsRecognized = false;
|
||||
|
||||
try {
|
||||
parser.parse(args);
|
||||
} catch (CmdLineParser.OptionException e) {
|
||||
System.err.println(e.getMessage());
|
||||
System.exit(-2);
|
||||
}
|
||||
|
||||
Boolean helpRequested = parser.getOptionValue(helpOption);
|
||||
|
||||
if (parser.getOptionValue(licenseOption) != null) {
|
||||
optionsRecognized = true;
|
||||
|
||||
System.out.println("Copyright 2018 Jochen Stärk\n" + "\n"
|
||||
+ "Licensed under the Apache License, Version 2.0 (the \"License\");\n"
|
||||
+ "you may not use this file except in compliance with the License.\n"
|
||||
+ "You may obtain a copy of the License at\n" + "\n"
|
||||
+ " http://www.apache.org/licenses/LICENSE-2.0\n" + "\n"
|
||||
+ "Unless required by applicable law or agreed to in writing, software\n"
|
||||
+ "distributed under the License is distributed on an \"AS IS\" BASIS,\n"
|
||||
+ "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"
|
||||
+ "See the License for the specific language governing permissions and\n"
|
||||
+ "limitations under the License.\n\n\n\n\n"
|
||||
+ "This software is embedding the PDF/A validator VeraPDF, "
|
||||
+ "http://verapdf.org/, which is available under GPL and MPL licenses.");
|
||||
|
||||
System.exit(0);
|
||||
}
|
||||
String filename = parser.getOptionValue(filenameOption);
|
||||
String action = parser.getOptionValue(actionOption);
|
||||
File logdir = new File("log");
|
||||
if (!logdir.exists() || !logdir.isDirectory() || !logdir.canWrite()) {
|
||||
System.err.println("Need writable subdirectory 'log' for log files.");
|
||||
}
|
||||
|
||||
if ((action != null) && (action.equals("validate"))) {
|
||||
ZUGFeRDValidator zfv=new ZUGFeRDValidator();
|
||||
System.out.println(zfv.validate(filename));
|
||||
|
||||
optionsRecognized = !zfv.hasOptionsError();
|
||||
if (!zfv.wasCompletelyValid()) {
|
||||
System.exit(-1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ((!optionsRecognized) || (helpRequested != null && helpRequested.booleanValue())) {
|
||||
System.out.println(
|
||||
"usage: --action validate -f <ZUGFeRD PDF Filename.pdf>|<ZUGFeRD XML Filename.xml> [-l (shows license)]");
|
||||
System.exit(-1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
new Main().run(args);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
343
libraryExtended/src/main/java/ZUV/PDFValidator.java
Normal file
343
libraryExtended/src/main/java/ZUV/PDFValidator.java
Normal file
@@ -0,0 +1,343 @@
|
||||
package ZUV;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringReader;
|
||||
import java.io.StringWriter;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Calendar;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.XMLConstants;
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
import javax.xml.validation.Schema;
|
||||
import javax.xml.validation.SchemaFactory;
|
||||
import javax.xml.xpath.XPath;
|
||||
import javax.xml.xpath.XPathConstants;
|
||||
import javax.xml.xpath.XPathExpression;
|
||||
import javax.xml.xpath.XPathExpressionException;
|
||||
import javax.xml.xpath.XPathFactory;
|
||||
|
||||
import org.mustangproject.ZUGFeRD.ZUGFeRDImporter;
|
||||
import org.riversun.bigdoc.bin.BigFileSearcher;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.verapdf.core.VeraPDFException;
|
||||
import org.verapdf.features.FeatureExtractorConfig;
|
||||
import org.verapdf.features.FeatureFactory;
|
||||
import org.verapdf.metadata.fixer.FixerFactory;
|
||||
import org.verapdf.metadata.fixer.MetadataFixerConfig;
|
||||
import org.verapdf.pdfa.VeraGreenfieldFoundryProvider;
|
||||
import org.verapdf.pdfa.validation.validators.ValidatorConfig;
|
||||
import org.verapdf.pdfa.validation.validators.ValidatorFactory;
|
||||
import org.verapdf.processor.BatchProcessor;
|
||||
import org.verapdf.processor.FormatOption;
|
||||
import org.verapdf.processor.ProcessorConfig;
|
||||
import org.verapdf.processor.ProcessorFactory;
|
||||
import org.verapdf.processor.TaskType;
|
||||
import org.verapdf.processor.plugins.PluginsCollectionConfig;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.NodeList;
|
||||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
public class PDFValidator extends Validator {
|
||||
|
||||
public PDFValidator(ValidationContext ctx) {
|
||||
super(ctx);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(PDFValidator.class.getCanonicalName()); // log output
|
||||
// is
|
||||
|
||||
private String pdfFilename;
|
||||
|
||||
private String pdfReport;
|
||||
|
||||
private String Signature;
|
||||
|
||||
private String zfXML = null;
|
||||
|
||||
protected static boolean stringArrayContains(String[] arr, String targetValue) {
|
||||
return Arrays.asList(arr).contains(targetValue);
|
||||
}
|
||||
|
||||
public void validate() throws IrrecoverableValidationError {
|
||||
|
||||
zfXML = null;
|
||||
File file = new File(pdfFilename);
|
||||
// file existence must have been checked before
|
||||
BigFileSearcher searcher = new BigFileSearcher();
|
||||
|
||||
byte[] pdfSignature = { '%', 'P', 'D', 'F' };
|
||||
if (searcher.indexOf(file, pdfSignature) != 0) {
|
||||
context.addResultItem(
|
||||
new ValidationResultItem(ESeverity.fatal, "Not a PDF file "+pdfFilename).setSection(20).setPart(EPart.pdf));
|
||||
|
||||
}
|
||||
|
||||
long startPDFTime = Calendar.getInstance().getTimeInMillis();
|
||||
|
||||
// Step 1 Validate PDF
|
||||
|
||||
VeraGreenfieldFoundryProvider.initialise();
|
||||
// Default validator config
|
||||
ValidatorConfig validatorConfig = ValidatorFactory.defaultConfig();
|
||||
// Default features config
|
||||
FeatureExtractorConfig featureConfig = FeatureFactory.defaultConfig();
|
||||
// Default plugins config
|
||||
PluginsCollectionConfig pluginsConfig = PluginsCollectionConfig.defaultConfig();
|
||||
// Default fixer config
|
||||
MetadataFixerConfig fixerConfig = FixerFactory.defaultConfig();
|
||||
// Tasks configuring
|
||||
EnumSet tasks = EnumSet.noneOf(TaskType.class);
|
||||
tasks.add(TaskType.VALIDATE);
|
||||
// tasks.add(TaskType.EXTRACT_FEATURES);
|
||||
// tasks.add(TaskType.FIX_METADATA);
|
||||
// Creating processor config
|
||||
ProcessorConfig processorConfig = ProcessorFactory.fromValues(validatorConfig, featureConfig, pluginsConfig,
|
||||
fixerConfig, tasks);
|
||||
// Creating processor and output stream.
|
||||
ByteArrayOutputStream reportStream = new ByteArrayOutputStream();
|
||||
try (BatchProcessor processor = ProcessorFactory.fileBatchProcessor(processorConfig)) {
|
||||
// Generating list of files for processing
|
||||
List<File> files = new ArrayList<>();
|
||||
files.add(new File(pdfFilename));
|
||||
// starting the processor
|
||||
processor.process(files, ProcessorFactory.getHandler(FormatOption.MRR, true, reportStream, 100,
|
||||
processorConfig.getValidatorConfig().isRecordPasses()));
|
||||
|
||||
pdfReport = reportStream.toString("utf-8").replaceAll("<\\?xml version=\"1\\.0\" encoding=\"utf-8\"\\?>",
|
||||
"");
|
||||
} catch (VeraPDFException e) {
|
||||
ValidationResultItem vri = new ValidationResultItem(ESeverity.exception, e.getMessage()).setSection(6)
|
||||
.setPart(EPart.pdf);
|
||||
StringWriter sw = new StringWriter();
|
||||
PrintWriter pw = new PrintWriter(sw);
|
||||
e.printStackTrace(pw);
|
||||
vri.setStacktrace(sw.toString());
|
||||
context.addResultItem(vri);
|
||||
} catch (IOException excep) {
|
||||
context.addResultItem(new ValidationResultItem(ESeverity.exception, excep.getMessage()).setSection(7)
|
||||
.setPart(EPart.pdf).setStacktrace(excep.getStackTrace().toString()));
|
||||
}
|
||||
|
||||
// step 2 validate XMP
|
||||
ZUGFeRDImporter zi = new ZUGFeRDImporter(pdfFilename);
|
||||
String xmp = zi.getXMP();
|
||||
|
||||
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
|
||||
Document docXMP;
|
||||
|
||||
if (xmp.length() == 0) {
|
||||
context.addResultItem(new ValidationResultItem(ESeverity.error, "Invalid XMP Metadata not found")
|
||||
.setSection(17).setPart(EPart.pdf));
|
||||
}
|
||||
/*
|
||||
* checking for sth like <zf:ConformanceLevel>EXTENDED</zf:ConformanceLevel>
|
||||
* <zf:DocumentType>INVOICE</zf:DocumentType>
|
||||
* <zf:DocumentFileName>ZUGFeRD-invoice.xml</zf:DocumentFileName>
|
||||
* <zf:Version>1.0</zf:Version>
|
||||
*/
|
||||
try {
|
||||
DocumentBuilder builder = factory.newDocumentBuilder();
|
||||
InputSource is = new InputSource(new StringReader(xmp));
|
||||
docXMP = builder.parse(is);
|
||||
|
||||
XPathFactory xpathFactory = XPathFactory.newInstance();
|
||||
|
||||
// Create XPath object XPath xpath = xpathFactory.newXPath(); XPathExpression
|
||||
|
||||
XPath xpath = xpathFactory.newXPath();
|
||||
// xpath.compile("//*[local-name()=\"GuidelineSpecifiedDocumentContextParameter\"]/[local-name()=\"ID\"]");
|
||||
// evaluate expression result on XML document ndList = (NodeList)
|
||||
|
||||
// get the first element
|
||||
XPathExpression xpr = xpath.compile(
|
||||
"//*[local-name()=\"ConformanceLevel\"]|//*[local-name()=\"Description\"]/@ConformanceLevel");
|
||||
NodeList nodes = (NodeList) xpr.evaluate(docXMP, XPathConstants.NODESET);
|
||||
|
||||
if (nodes.getLength() == 0) {
|
||||
context.addResultItem(
|
||||
new ValidationResultItem(ESeverity.error, "XMP Metadata: ConformanceLevel not found")
|
||||
.setSection(11).setPart(EPart.pdf));
|
||||
}
|
||||
|
||||
boolean conformanceLevelValid=false;
|
||||
for (int i = 0; i < nodes.getLength(); i++) {
|
||||
|
||||
String[] valueArray = { "BASIC WL", "BASIC", "MINIMUM", "EN 16931", "COMFORT", "CIUS", "EXTENDED" };
|
||||
if (stringArrayContains(valueArray, nodes.item(i).getTextContent())) {
|
||||
conformanceLevelValid=true;
|
||||
}
|
||||
}
|
||||
if (!conformanceLevelValid) {
|
||||
context.addResultItem(new ValidationResultItem(ESeverity.error,
|
||||
"XMP Metadata: ConformanceLevel contains invalid value").setSection(12).setPart(EPart.pdf));
|
||||
|
||||
}
|
||||
xpr = xpath.compile("//*[local-name()=\"DocumentType\"]|//*[local-name()=\"Description\"]/@DocumentType");
|
||||
nodes = (NodeList) xpr.evaluate(docXMP, XPathConstants.NODESET);
|
||||
|
||||
if (nodes.getLength() == 0) {
|
||||
context.addResultItem(new ValidationResultItem(ESeverity.error, "XMP Metadata: DocumentType not found")
|
||||
.setSection(13).setPart(EPart.pdf));
|
||||
}
|
||||
|
||||
boolean documentTypeValid=false;
|
||||
for (int i = 0; i < nodes.getLength(); i++) {
|
||||
if (nodes.item(i).getTextContent().equals("INVOICE")) {
|
||||
documentTypeValid=true;
|
||||
}
|
||||
}
|
||||
if (!documentTypeValid) {
|
||||
context.addResultItem(
|
||||
new ValidationResultItem(ESeverity.error, "XMP Metadata: DocumentType invalid")
|
||||
.setSection(14).setPart(EPart.pdf));
|
||||
|
||||
}
|
||||
xpr = xpath.compile(
|
||||
"//*[local-name()=\"DocumentFileName\"]|//*[local-name()=\"Description\"]/@DocumentFileName");
|
||||
nodes = (NodeList) xpr.evaluate(docXMP, XPathConstants.NODESET);
|
||||
|
||||
if (nodes.getLength() == 0) {
|
||||
context.addResultItem(
|
||||
new ValidationResultItem(ESeverity.error, "XMP Metadata: DocumentFileName not found")
|
||||
.setSection(21).setPart(EPart.pdf));
|
||||
}
|
||||
boolean documentFilenameValid=false;
|
||||
for (int i = 0; i < nodes.getLength(); i++) {
|
||||
String[] valueArray = { "factur-x.xml", "ZUGFeRD-invoice.xml", "zugferd-invoice.xml" };
|
||||
if (stringArrayContains(valueArray, nodes.item(i).getTextContent())) {
|
||||
documentFilenameValid=true;
|
||||
}
|
||||
|
||||
// e.g. ZUGFeRD-invoice.xml
|
||||
}
|
||||
if (!documentFilenameValid) {
|
||||
|
||||
context.addResultItem(new ValidationResultItem(ESeverity.error,
|
||||
"XMP Metadata: DocumentFileName contains invalid value").setSection(19).setPart(EPart.pdf));
|
||||
}
|
||||
xpr = xpath.compile("//*[local-name()=\"Version\"]|//*[local-name()=\"Description\"]/@Version");
|
||||
nodes = (NodeList) xpr.evaluate(docXMP, XPathConstants.NODESET);
|
||||
|
||||
// get all child nodes
|
||||
// NodeList nodes = element.getChildNodes();
|
||||
// expr.evaluate(docXMP, XPathConstants.NODESET);
|
||||
// print the text content of each child
|
||||
if (nodes.getLength() == 0) {
|
||||
context.addResultItem(new ValidationResultItem(ESeverity.error, "XMP Metadata: Version not found")
|
||||
.setSection(15).setPart(EPart.pdf));
|
||||
}
|
||||
|
||||
boolean versionValid=false;
|
||||
for (int i = 0; i < nodes.getLength(); i++) {
|
||||
String[] valueArray = { "1.0", "2p0" };
|
||||
if (stringArrayContains(valueArray, nodes.item(i).getTextContent())) {
|
||||
versionValid=true;
|
||||
} // e.g. 1.0
|
||||
}
|
||||
if (!versionValid) {
|
||||
context.addResultItem(
|
||||
new ValidationResultItem(ESeverity.error, "XMP Metadata: Version contains invalid value")
|
||||
.setSection(16).setPart(EPart.pdf));
|
||||
|
||||
}
|
||||
|
||||
} catch (SAXException e) {
|
||||
LOGGER.error(e.getMessage(), e);
|
||||
} catch (IOException e) {
|
||||
LOGGER.error(e.getMessage(), e);
|
||||
} catch (ParserConfigurationException e) {
|
||||
LOGGER.error(e.getMessage(), e);
|
||||
} catch (XPathExpressionException e) {
|
||||
LOGGER.error(e.getMessage(), e);
|
||||
}
|
||||
zfXML = zi.getUTF8();
|
||||
|
||||
// step 3 find signatures
|
||||
try {
|
||||
byte[] symtraxSignature = "Symtrax".getBytes("UTF-8");
|
||||
byte[] mustangSignature = "via mustangproject".getBytes("UTF-8");
|
||||
byte[] facturxpythonSignature = "by Alexis de Lattre".getBytes("UTF-8");
|
||||
byte[] intarsysSignature = "intarsys ".getBytes("UTF-8");
|
||||
byte[] konikSignature = "Konik".getBytes("UTF-8");
|
||||
byte[] pdfMachineSignature = "pdfMachine from Broadgun Software".getBytes("UTF-8");
|
||||
|
||||
if (searcher.indexOf(file, symtraxSignature) != -1) {
|
||||
Signature = "Symtrax";
|
||||
} else if (searcher.indexOf(file, mustangSignature) != -1) {
|
||||
Signature = "Mustang";
|
||||
} else if (searcher.indexOf(file, facturxpythonSignature) != -1) {
|
||||
Signature = "Factur/X Python";
|
||||
} else if (searcher.indexOf(file, intarsysSignature) != -1) {
|
||||
Signature = "Intarsys";
|
||||
} else if (searcher.indexOf(file, konikSignature) != -1) {
|
||||
Signature = "Konik";
|
||||
} else if (searcher.indexOf(file, pdfMachineSignature) != -1) {
|
||||
Signature = "pdfMachine";
|
||||
}
|
||||
|
||||
context.setSignature(Signature);
|
||||
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
LOGGER.error(e.getMessage(), e);
|
||||
}
|
||||
|
||||
// step 4:validate additional data
|
||||
HashMap<String, byte[]> additionalData=zi.getAdditionalData();
|
||||
for (String filename : additionalData.keySet()) {
|
||||
// validating xml in byte[] additionalData.get(filename)
|
||||
LOGGER.info("validating additionalData " + filename);
|
||||
validateSchema(additionalData.get(filename), "ad/basic/additional_data_base_schema.xsd", 2, EPart.pdf);
|
||||
}
|
||||
|
||||
|
||||
//end
|
||||
|
||||
long endTime = Calendar.getInstance().getTimeInMillis();
|
||||
if (!pdfReport.contains("validationReports compliant=\"1\"")) {
|
||||
context.setInvalid();
|
||||
}
|
||||
if (!pdfReport.contains("PDF/A-3")) {
|
||||
context.addResultItem(
|
||||
new ValidationResultItem(ESeverity.error, "Not a PDF/A-3").setSection(23).setPart(EPart.pdf));
|
||||
|
||||
}
|
||||
context.addCustomXML(pdfReport + "<info><signature>"
|
||||
+ ((context.getSignature() != null) ? context.getSignature() : "unknown")
|
||||
+ "</signature><duration unit='ms'>" + (endTime - startPDFTime) + "</duration></info>");
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setFilename(String filename) throws IrrecoverableValidationError {
|
||||
this.pdfFilename = filename;
|
||||
|
||||
}
|
||||
|
||||
public String getRawXML() {
|
||||
return zfXML;
|
||||
|
||||
}
|
||||
|
||||
public String getSignature() {
|
||||
return Signature;
|
||||
}
|
||||
|
||||
}
|
||||
84
libraryExtended/src/main/java/ZUV/SchematronPipeline.java
Normal file
84
libraryExtended/src/main/java/ZUV/SchematronPipeline.java
Normal file
@@ -0,0 +1,84 @@
|
||||
package ZUV;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.Templates;
|
||||
import javax.xml.transform.Transformer;
|
||||
import javax.xml.transform.TransformerConfigurationException;
|
||||
import javax.xml.transform.TransformerException;
|
||||
import javax.xml.transform.TransformerFactory;
|
||||
import javax.xml.transform.URIResolver;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
|
||||
|
||||
public class SchematronPipeline {
|
||||
static final ClassLoader cl = SchematronPipeline.class.getClassLoader();
|
||||
private static final TransformerFactory factory = getTransformerFactory();
|
||||
private static final String xslExt = ".xsl"; //$NON-NLS-1$
|
||||
private static final String resourcePath = "iso-schematron-xslt2/"; //$NON-NLS-1$
|
||||
private static final String isoDsdlXsl = resourcePath + "iso_dsdl_include" + xslExt; //$NON-NLS-1$
|
||||
private static final String isoExpXsl = resourcePath + "iso_abstract_expand" + xslExt; //$NON-NLS-1$
|
||||
private static final String isoSvrlXsl = resourcePath + "iso_svrl_for_xslt2" + xslExt; //$NON-NLS-1$
|
||||
private static final Templates cachedIsoDsdXsl = createCachedTransform(isoDsdlXsl);
|
||||
private static final Templates cachedExpXsl = createCachedTransform(isoExpXsl);
|
||||
private static final Templates cachedIsoSvrlXsl = createCachedTransform(isoSvrlXsl);
|
||||
|
||||
private static TransformerFactory getTransformerFactory() {
|
||||
TransformerFactory fact = TransformerFactory.newInstance();
|
||||
fact.setURIResolver(new ClasspathResourceURIResolver());
|
||||
return fact;
|
||||
}
|
||||
|
||||
static Templates createCachedTransform(final String transName) {
|
||||
try {
|
||||
return factory.newTemplates(new StreamSource(cl.getResourceAsStream(transName)));
|
||||
} catch (TransformerConfigurationException excep) {
|
||||
throw new IllegalStateException("Policy Schematron transformer XSL " + transName + " not found.", excep); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
}
|
||||
}
|
||||
|
||||
public static void processSchematron(InputStream schematronSource, OutputStream xslDest)
|
||||
throws TransformerException, IOException {
|
||||
File isoDsdResult = createTempFileResult(cachedIsoDsdXsl.newTransformer(), new StreamSource(schematronSource),
|
||||
"IsoDsd"); //$NON-NLS-1$
|
||||
File isoExpResult = createTempFileResult(cachedExpXsl.newTransformer(), new StreamSource(isoDsdResult),
|
||||
"ExpXsl"); //$NON-NLS-1$
|
||||
cachedIsoSvrlXsl.newTransformer().transform(new StreamSource(isoExpResult), new StreamResult(xslDest));
|
||||
isoDsdResult.delete();
|
||||
isoExpResult.delete();
|
||||
}
|
||||
|
||||
private static File createTempFileResult(final Transformer transformer, final StreamSource toTransform,
|
||||
final String suffix) throws TransformerException, IOException {
|
||||
File result = File.createTempFile("ZUV_", suffix); //$NON-NLS-1$
|
||||
result.deleteOnExit();
|
||||
|
||||
try (FileOutputStream fos = new FileOutputStream(result)) {
|
||||
transformer.transform(toTransform, new StreamResult(fos));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static class ClasspathResourceURIResolver implements URIResolver {
|
||||
ClasspathResourceURIResolver() {
|
||||
// Do nothing, just prevents synthetic access warning.
|
||||
}
|
||||
|
||||
@Override
|
||||
public Source resolve(String href, String base) throws TransformerException {
|
||||
return new StreamSource(cl.getResourceAsStream(resourcePath + href));
|
||||
}
|
||||
}
|
||||
|
||||
public static void applySchematronXsl(final InputStream xmlFile,
|
||||
final OutputStream policyReport) throws TransformerException {
|
||||
Transformer transformer = factory.newTransformer(new StreamSource(cl.getResourceAsStream(resourcePath+"ZUGFeRDSchematronStylesheetXSLT1.xsl")));
|
||||
transformer.transform(new StreamSource(xmlFile), new StreamResult(policyReport));
|
||||
}
|
||||
}
|
||||
132
libraryExtended/src/main/java/ZUV/ValidationContext.java
Normal file
132
libraryExtended/src/main/java/ZUV/ValidationContext.java
Normal file
@@ -0,0 +1,132 @@
|
||||
package ZUV;
|
||||
|
||||
import java.util.Vector;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
|
||||
public class ValidationContext {
|
||||
protected Vector<ValidationResultItem> results;
|
||||
protected String customXML = "";
|
||||
private String version = null;
|
||||
private String profile = null;
|
||||
private String signature = null;
|
||||
private boolean isValid = true;
|
||||
protected Logger logger;
|
||||
private String filename;
|
||||
|
||||
public ValidationContext(Logger log) {
|
||||
logger = log;
|
||||
results = new Vector<ValidationResultItem>();
|
||||
}
|
||||
|
||||
public void addResultItem(ValidationResultItem vr) throws IrrecoverableValidationError {
|
||||
results.add(vr);
|
||||
|
||||
if ((vr.getSeverity() == ESeverity.fatal) || (vr.getSeverity() == ESeverity.exception)
|
||||
|| (vr.getSeverity() == ESeverity.error)) {
|
||||
isValid = false;
|
||||
|
||||
}
|
||||
if (logger != null) {
|
||||
if ((vr.getSeverity() == ESeverity.fatal) || (vr.getSeverity() == ESeverity.exception)) {
|
||||
logger.error("Fatal Error " + vr.getSection() + ": " + vr.getMessage());
|
||||
} else if ((vr.getSeverity() == ESeverity.error)) {
|
||||
logger.error("Error " + vr.getSection() + ": " + vr.getMessage());
|
||||
} else if (vr.getSeverity() == ESeverity.warning) {
|
||||
logger.warn("Warning " + vr.getSection() + ": " + vr.getMessage());
|
||||
} else if (vr.getSeverity() == ESeverity.notice) {
|
||||
logger.info("Notice " + vr.getSection() + ": " + vr.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
if ((vr.getSeverity() == ESeverity.fatal) || (vr.getSeverity() == ESeverity.exception)) {
|
||||
throw new IrrecoverableValidationError(vr.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void clearCustomXML() {
|
||||
customXML = "";
|
||||
}
|
||||
|
||||
public void addCustomXML(String XML) {
|
||||
customXML += XML;
|
||||
}
|
||||
|
||||
public String getCustomXML() {
|
||||
return customXML;
|
||||
}
|
||||
|
||||
public ValidationContext setVersion(String version) {
|
||||
this.version = version;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ValidationContext setProfile(String profile) {
|
||||
this.profile = profile;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ValidationContext setSignature(String signature) {
|
||||
this.signature = signature;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public String getProfile() {
|
||||
return profile;
|
||||
}
|
||||
|
||||
public String getSignature() {
|
||||
return signature;
|
||||
}
|
||||
|
||||
public boolean isValid() {
|
||||
return isValid;
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
results.clear();
|
||||
isValid = true;
|
||||
clearCustomXML();
|
||||
version = null;
|
||||
profile = null;
|
||||
signature = null;
|
||||
|
||||
}
|
||||
|
||||
public String getXMLResult() {
|
||||
String res = getCustomXML();
|
||||
if (results.size() > 0) {
|
||||
res += "<messages>";
|
||||
}
|
||||
|
||||
for (ValidationResultItem validationResultItem : results) {
|
||||
// xml and pdf are handled in their respective sections
|
||||
res += validationResultItem.getXMLOnce() + "\n";
|
||||
}
|
||||
if (results.size() > 0) {
|
||||
res += "</messages>";
|
||||
}
|
||||
res += "<summary status='" + (isValid ? "valid" : "invalid") + "'/>";
|
||||
return res;
|
||||
}
|
||||
|
||||
public void setInvalid() {
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
public void setFilename(String filename) {
|
||||
this.filename=filename;
|
||||
}
|
||||
public String getFilename() {
|
||||
if (filename==null) {
|
||||
return "";
|
||||
} else {
|
||||
return filename;
|
||||
}
|
||||
}
|
||||
}
|
||||
112
libraryExtended/src/main/java/ZUV/ValidationResultItem.java
Normal file
112
libraryExtended/src/main/java/ZUV/ValidationResultItem.java
Normal file
@@ -0,0 +1,112 @@
|
||||
package ZUV;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class ValidationResultItem {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(ValidationResultItem.class.getCanonicalName()); // log output is
|
||||
// ignored for the
|
||||
// time being
|
||||
|
||||
|
||||
protected String message, location=null;
|
||||
protected int section =-1;
|
||||
|
||||
|
||||
private ESeverity severity=ESeverity.error;
|
||||
private String criterion=null;
|
||||
|
||||
|
||||
private String stacktrace=null;
|
||||
private boolean hasBeenOutputted=false;
|
||||
|
||||
|
||||
private EPart part;
|
||||
|
||||
public ValidationResultItem(ESeverity sev, String msg) {
|
||||
setSeverity(sev);
|
||||
setMessage(msg);
|
||||
}
|
||||
public ValidationResultItem setMessage(String msg) {
|
||||
message=msg;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ValidationResultItem setSection(int sec) {
|
||||
section=sec;
|
||||
return this;
|
||||
}
|
||||
public ValidationResultItem setLocation(String loc) {
|
||||
location=loc;
|
||||
return this;
|
||||
}
|
||||
public ValidationResultItem setPart(EPart loc) {
|
||||
part=loc;
|
||||
return this;
|
||||
}
|
||||
public EPart getPart() {
|
||||
return part;
|
||||
}
|
||||
public ValidationResultItem setSeverity(ESeverity sev) {
|
||||
severity=sev;
|
||||
return this;
|
||||
}
|
||||
public ValidationResultItem setStacktrace(String stack) {
|
||||
stacktrace=stack;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public String getXML() {
|
||||
String tagname="error";
|
||||
if (severity==ESeverity.exception) {
|
||||
tagname="exception";
|
||||
} else if (severity==ESeverity.warning) {
|
||||
tagname="warning";
|
||||
} else if (severity==ESeverity.notice) {
|
||||
tagname="notice";
|
||||
}
|
||||
String additionalAttributes="";
|
||||
String additionalContents="";
|
||||
if (section!=-1) {
|
||||
additionalAttributes+=" type=\""+section+"\"";
|
||||
}
|
||||
if (location!=null) {
|
||||
additionalAttributes+=" location=\""+XMLTools.encodeAttribute(location)+"\"";
|
||||
}
|
||||
if (criterion!=null) {
|
||||
additionalAttributes+=" criterion=\""+XMLTools.encodeAttribute(criterion)+"\"";
|
||||
}
|
||||
if (stacktrace!=null) {
|
||||
additionalContents+="<stacktrace>"+XMLTools.encodeAttribute(stacktrace)+"</stacktrace>";
|
||||
}
|
||||
hasBeenOutputted=true;
|
||||
return "<"+tagname+additionalAttributes+">"+XMLTools.encodeXML(message+additionalContents)+"</"+tagname+">";
|
||||
}
|
||||
|
||||
public String getXMLOnce() {
|
||||
if (!hasBeenOutputted) {
|
||||
return getXML();
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public ValidationResultItem setCriterion(String test) {
|
||||
criterion = test;
|
||||
return this;
|
||||
}
|
||||
public ESeverity getSeverity() {
|
||||
return severity;
|
||||
}
|
||||
|
||||
public int getSection() {
|
||||
return section;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
60
libraryExtended/src/main/java/ZUV/Validator.java
Normal file
60
libraryExtended/src/main/java/ZUV/Validator.java
Normal file
@@ -0,0 +1,60 @@
|
||||
package ZUV;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
|
||||
import javax.xml.XMLConstants;
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
import javax.xml.validation.Schema;
|
||||
import javax.xml.validation.SchemaFactory;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
//abstract class
|
||||
public abstract class Validator {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(Validator.class.getCanonicalName()); // log output
|
||||
|
||||
protected ValidationContext context;
|
||||
|
||||
public Validator(ValidationContext ctx){
|
||||
this.context=ctx;
|
||||
}
|
||||
|
||||
//abstract method
|
||||
|
||||
public abstract void setFilename(String filename) throws IrrecoverableValidationError;
|
||||
public abstract void validate() throws IrrecoverableValidationError;
|
||||
|
||||
public String getXMLResult() {
|
||||
return context.getXMLResult();
|
||||
}
|
||||
|
||||
/***
|
||||
* validates a schema, which can only be needed in XML validation - and in pdf validation for additional data
|
||||
* @param xmlRawData
|
||||
* @param schemaPath
|
||||
*/
|
||||
protected void validateSchema(byte[] xmlRawData, String schemaPath,int section, EPart part) throws IrrecoverableValidationError {
|
||||
URL schemaFile = ClassLoader.getSystemResource("schema/" + schemaPath);
|
||||
Source xmlData = new StreamSource(new ByteArrayInputStream(xmlRawData));
|
||||
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
|
||||
try {
|
||||
Schema schema = schemaFactory.newSchema(schemaFile);
|
||||
javax.xml.validation.Validator validator = schema.newValidator();
|
||||
validator.validate(xmlData);
|
||||
} catch (SAXException e) {
|
||||
context.addResultItem(new ValidationResultItem(ESeverity.error, "schema validation fails:" + e)
|
||||
.setSection(section).setPart(part));
|
||||
} catch (IOException e) {
|
||||
LOGGER.error(e.getMessage(), e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
51
libraryExtended/src/main/java/ZUV/XMLTools.java
Normal file
51
libraryExtended/src/main/java/ZUV/XMLTools.java
Normal file
@@ -0,0 +1,51 @@
|
||||
package ZUV;
|
||||
|
||||
|
||||
public class XMLTools {
|
||||
public static String encodeXML(CharSequence s) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
int len = s.length();
|
||||
for (int i=0;i<len;i++) {
|
||||
int c = s.charAt(i);
|
||||
if (c >= 0xd800 && c <= 0xdbff && i + 1 < len) {
|
||||
c = ((c-0xd7c0)<<10) | (s.charAt(++i)&0x3ff); // UTF16 decode
|
||||
}
|
||||
if (c < 0x80) { // ASCII range: test most common case first
|
||||
if (c < 0x20 && (c != '\t' && c != '\r' && c != '\n')) {
|
||||
// Illegal XML character, even encoded. Skip or substitute
|
||||
sb.append("�"); // Unicode replacement character
|
||||
} else {
|
||||
switch(c) {
|
||||
case '&': sb.append("&"); break;
|
||||
case '>': sb.append(">"); break;
|
||||
case '<': sb.append("<"); break;
|
||||
// Uncomment next two if encoding for an XML attribute
|
||||
// case '\'' sb.append("'"); break;
|
||||
// case '\"' sb.append("""); break;
|
||||
// Uncomment next three if you prefer, but not required
|
||||
// case '\n' sb.append(" "); break;
|
||||
// case '\r' sb.append(" "); break;
|
||||
// case '\t' sb.append("	"); break;
|
||||
|
||||
default: sb.append((char)c);
|
||||
}
|
||||
}
|
||||
} else if ((c >= 0xd800 && c <= 0xdfff) || c == 0xfffe || c == 0xffff) {
|
||||
// Illegal XML character, even encoded. Skip or substitute
|
||||
sb.append("�"); // Unicode replacement character
|
||||
} else {
|
||||
sb.append("&#x");
|
||||
sb.append(Integer.toHexString(c));
|
||||
sb.append(';');
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
public static String encodeAttribute(String s) {
|
||||
String res=s.replace("\n", "").replace("\r", "").replace("\"", "");
|
||||
|
||||
return XMLTools.encodeXML(res);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
361
libraryExtended/src/main/java/ZUV/XMLValidator.java
Normal file
361
libraryExtended/src/main/java/ZUV/XMLValidator.java
Normal file
@@ -0,0 +1,361 @@
|
||||
package ZUV;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringReader;
|
||||
import java.io.StringWriter;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
import javax.xml.xpath.XPath;
|
||||
import javax.xml.xpath.XPathConstants;
|
||||
import javax.xml.xpath.XPathExpression;
|
||||
import javax.xml.xpath.XPathFactory;
|
||||
|
||||
import org.oclc.purl.dsdl.svrl.FailedAssert;
|
||||
import org.oclc.purl.dsdl.svrl.FiredRule;
|
||||
import org.oclc.purl.dsdl.svrl.SchematronOutputType;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.Node;
|
||||
import org.w3c.dom.NodeList;
|
||||
|
||||
import com.helger.schematron.ISchematronResource;
|
||||
import com.helger.schematron.xslt.SchematronResourceXSLT;
|
||||
|
||||
public class XMLValidator extends Validator {
|
||||
public XMLValidator(ValidationContext ctx) {
|
||||
super(ctx);
|
||||
}
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(XMLValidator.class.getCanonicalName()); // log output
|
||||
// is
|
||||
// ignored for the
|
||||
// time being
|
||||
|
||||
protected String zfXML = "";
|
||||
protected String filename = "";
|
||||
int firedRules=0;
|
||||
int failedRules=0;
|
||||
ISchematronResource aResSCH = null;
|
||||
|
||||
public void setFilename(String name) throws IrrecoverableValidationError { // from XML Filename
|
||||
filename = name;
|
||||
// file existence must have been checked before
|
||||
|
||||
try {
|
||||
zfXML = removeBOMFromString(Files.readAllBytes(Paths.get(name)));
|
||||
} catch (IOException e) {
|
||||
|
||||
ValidationResultItem vri = new ValidationResultItem(ESeverity.exception, e.getMessage()).setSection(9)
|
||||
.setPart(EPart.xml);
|
||||
StringWriter sw = new StringWriter();
|
||||
PrintWriter pw = new PrintWriter(sw);
|
||||
e.printStackTrace(pw);
|
||||
vri.setStacktrace(sw.toString());
|
||||
context.addResultItem(vri);
|
||||
}
|
||||
}
|
||||
|
||||
public void setStringContent(String xml) {
|
||||
zfXML = xml;
|
||||
}
|
||||
|
||||
protected String removeBOMFromString(byte[] rawXML) {
|
||||
byte[] bomlessData;
|
||||
|
||||
if ((rawXML != null) && (rawXML.length > 3) && (rawXML[0] == (byte) 0xEF) && (rawXML[1] == (byte) 0xBB)
|
||||
&& (rawXML[2] == (byte) 0xBF)) {
|
||||
// I don't like BOMs, lets remove it
|
||||
bomlessData = new byte[rawXML.length - 3];
|
||||
System.arraycopy(rawXML, 3, bomlessData, 0, rawXML.length - 3);
|
||||
} else {
|
||||
bomlessData = rawXML;
|
||||
}
|
||||
|
||||
return new String(bomlessData);
|
||||
|
||||
}
|
||||
|
||||
public static boolean matchesURI(String uri1, String uri2) {
|
||||
return (uri1.equals(uri2)||uri1.startsWith(uri2+"#"));
|
||||
}
|
||||
|
||||
/***
|
||||
*
|
||||
* @param xmlString
|
||||
* @param overrideProfileCheck
|
||||
* if set to true, all ZF2 files will be checked against EN16931
|
||||
* schematron, since no other schematron is available
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void validate() throws IrrecoverableValidationError {
|
||||
long startXMLTime = Calendar.getInstance().getTimeInMillis();
|
||||
firedRules=0;
|
||||
failedRules=0;
|
||||
|
||||
|
||||
ByteArrayInputStream xmlByteInputStream = new ByteArrayInputStream(zfXML.getBytes(StandardCharsets.UTF_8));
|
||||
|
||||
if (zfXML.isEmpty()) {
|
||||
ValidationResultItem res = new ValidationResultItem(ESeverity.exception,
|
||||
"XML data not found in " + filename
|
||||
+ ": did you specify a pdf or xml file and does the xml file contain an embedded XML file?")
|
||||
.setSection(3);
|
||||
context.addResultItem(res);
|
||||
|
||||
} else {
|
||||
|
||||
// final ISchematronResource aResSCH =
|
||||
// SchematronResourceSCH.fromFile (new File("ZUGFeRD_1p0.scmt"));
|
||||
// ... DOES work but is highly deprecated (and rightly so) because
|
||||
// it takes 30-40min,
|
||||
|
||||
try {
|
||||
|
||||
/***
|
||||
* private static final String VALID_SCHEMATRON = "test-sch/valid01.sch";
|
||||
* private static final String VALID_XMLINSTANCE = "test-xml/valid01.xml";
|
||||
*
|
||||
* @Test public void testWriteValid () throws Exception { final Document aDoc =
|
||||
* SchematronResourceSCH.fromClassPath (VALID_SCHEMATRON)
|
||||
* .applySchematronValidation (new ClassPathResource (VALID_XMLINSTANCE));
|
||||
*
|
||||
*/
|
||||
|
||||
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
|
||||
dbf.setNamespaceAware(true); // otherwise we can not act namespace independently, i.e. use
|
||||
// document.getElementsByTagNameNS("*",...
|
||||
|
||||
DocumentBuilder db = dbf.newDocumentBuilder();
|
||||
|
||||
Document doc = db.parse(xmlByteInputStream);
|
||||
|
||||
Element root = doc.getDocumentElement();
|
||||
|
||||
NodeList ndList;
|
||||
|
||||
// rootNode = document.getDocumentElement();
|
||||
// ApplicableSupplyChainTradeSettlement
|
||||
|
||||
// Create XPathFactory object
|
||||
XPathFactory xpathFactory = XPathFactory.newInstance();
|
||||
|
||||
// Create XPath object
|
||||
XPath xpath = xpathFactory.newXPath();
|
||||
XPathExpression expr = xpath.compile(
|
||||
"//*[local-name()=\"GuidelineSpecifiedDocumentContextParameter\"]/*[local-name()=\"ID\"]/text()");
|
||||
// evaluate expression result on XML document
|
||||
ndList = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
|
||||
|
||||
for (int bookingIndex = 0; bookingIndex < ndList.getLength(); bookingIndex++) {
|
||||
Node booking = ndList.item(bookingIndex);
|
||||
// if there is a attribute in the tag number:value
|
||||
// urn:ferd:CrossIndustryDocument:invoice:1p0:extended
|
||||
// setForeignReference(booking.getTextContent());
|
||||
|
||||
context.setProfile(booking.getNodeValue());
|
||||
}
|
||||
boolean isMiniumum = false;
|
||||
boolean isBasic = false;
|
||||
boolean isBasicWithoutLines = false;
|
||||
boolean isEN16931 = false;
|
||||
boolean isExtended = false;
|
||||
String xsltFilename = null;
|
||||
// urn:ferd:CrossIndustryDocument:invoice:1p0:extended,
|
||||
// urn:ferd:CrossIndustryDocument:invoice:1p0:comfort,
|
||||
// urn:ferd:CrossIndustryDocument:invoice:1p0:basic,
|
||||
|
||||
// urn:cen.eu:en16931:2017
|
||||
// urn:cen.eu:en16931:2017:compliant:factur-x.eu:1p0:basic
|
||||
if (root.getNodeName().equalsIgnoreCase("rsm:CrossIndustryInvoice")) { // ZUGFeRD 2.0 or Factur-X
|
||||
context.setVersion("2");
|
||||
|
||||
isMiniumum = context.getProfile().contains("minimum");
|
||||
isBasic = context.getProfile().contains("basic");
|
||||
isBasicWithoutLines = context.getProfile().contains("basicwl");
|
||||
if(isBasicWithoutLines) {
|
||||
isBasic=false;// basicwl also contains the string basic...
|
||||
}
|
||||
isEN16931 = matchesURI(context.getProfile(),"urn:cen.eu:en16931:2017:compliant:factur-x.eu:1p0:en16931")
|
||||
|| matchesURI(context.getProfile(),"urn:cen.eu:en16931:2017");
|
||||
|
||||
isExtended = context.getProfile().contains("extended");
|
||||
if(isExtended) {
|
||||
isEN16931=false;// the uri for extended is urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended and thus contains en16931...
|
||||
}
|
||||
if (isMiniumum) {
|
||||
LOGGER.debug("is Minimum");
|
||||
validateSchema(zfXML.getBytes(StandardCharsets.UTF_8),"zf2/MINIMUM/FACTUR-X_MINIMUM.xsd", 18, EPart.xml);
|
||||
xsltFilename="/xslt/zugferd21_minimum.xsl";
|
||||
} else if (isBasicWithoutLines) {
|
||||
LOGGER.debug("is Basic/WL");
|
||||
validateSchema(zfXML.getBytes(StandardCharsets.UTF_8),"zf2/BASIC-WL/FACTUR-X_BASIC-WL.xsd", 18, EPart.xml);
|
||||
xsltFilename="/xslt/zugferd21_basicwl.xsl";
|
||||
} else if (isBasic) {
|
||||
LOGGER.debug("is Basic");
|
||||
validateSchema(zfXML.getBytes(StandardCharsets.UTF_8),"zf2/BASIC/FACTUR-X_BASIC.xsd", 18, EPart.xml);
|
||||
xsltFilename="/xslt/zugferd21_basic.xsl";
|
||||
} else if (isEN16931) {
|
||||
LOGGER.debug("is EN16931");
|
||||
validateSchema(zfXML.getBytes(StandardCharsets.UTF_8),"zf2/EN16931/FACTUR-X_EN16931.xsd", 18, EPart.xml);
|
||||
xsltFilename="/xslt/zugferd21_en16931.xsl";
|
||||
} else if (isExtended) {
|
||||
LOGGER.debug("is EXTENDED");
|
||||
validateSchema(zfXML.getBytes(StandardCharsets.UTF_8),"zf2/EXTENDED/FACTUR-X_EXTENDED.xsd", 18, EPart.xml);
|
||||
xsltFilename="/xslt/zugferd21_extended.xsl";
|
||||
} /*
|
||||
* ISchematronResource aResSCH = SchematronResourceXSLT.fromFile(new File(
|
||||
* "/Users/jstaerk/workspace/ZUV/src/main/resources/ZUGFeRDSchematronStylesheet.xsl"
|
||||
* ));
|
||||
*/
|
||||
|
||||
// takes around 10 Seconds. //
|
||||
// http://www.bentoweb.org/refs/TCDL2.0/tsdtf_schematron.html // explains that
|
||||
// this xslt can be created using sth like
|
||||
// saxon java net.sf.saxon.Transform -o tcdl2.0.tsdtf.sch.tmp.xsl -s
|
||||
// tcdl2.0.tsdtf.sch iso_svrl.xsl
|
||||
|
||||
} else { // ZUGFeRD 1.0
|
||||
context.setVersion("1");
|
||||
//
|
||||
if ((!matchesURI(context.getProfile(),"urn:ferd:CrossIndustryDocument:invoice:1p0:basic"))
|
||||
&& (!matchesURI(context.getProfile(), "urn:ferd:CrossIndustryDocument:invoice:1p0:comfort"))
|
||||
&& (!matchesURI(context.getProfile(), "urn:ferd:CrossIndustryDocument:invoice:1p0:extended"))) {
|
||||
context.addResultItem(new ValidationResultItem(ESeverity.error, "Unsupported profile type")
|
||||
.setSection(25).setPart(EPart.xml));
|
||||
}
|
||||
validateSchema(zfXML.getBytes(StandardCharsets.UTF_8),"zf1/ZUGFeRD1p0.xsd", 18, EPart.xml);
|
||||
|
||||
xsltFilename="/xslt/ZUGFeRD_1p0.xslt";
|
||||
}
|
||||
if (context.getVersion().equals("2")) {
|
||||
if ((!matchesURI(context.getProfile(), "urn:factur-x.eu:1p0:minimum"))
|
||||
&& (!matchesURI(context.getProfile(),"urn:zugferd.de:2p0:minimum"))
|
||||
&& (!matchesURI(context.getProfile(),"urn:factur-x.eu:1p0:basicwl"))
|
||||
&& (!matchesURI(context.getProfile(),"urn:zugferd.de:2p0:basicwl"))
|
||||
&& (!matchesURI(context.getProfile(),"urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:basic"))
|
||||
&& (!matchesURI(context.getProfile(),"urn:cen.eu:en16931:2017#compliant#urn:zugferd.de:2p0:basic"))
|
||||
&& (!matchesURI(context.getProfile(),"urn:cen.eu:en16931:2017"))
|
||||
&& (!matchesURI(context.getProfile(),"urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended"))
|
||||
&& (!matchesURI(context.getProfile(),"urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended")))
|
||||
|
||||
{
|
||||
context.addResultItem(
|
||||
new ValidationResultItem(ESeverity.error, "Unsupported profile type "+context.getProfile())
|
||||
.setSection(25).setPart(EPart.xml));
|
||||
|
||||
}
|
||||
} else /** v1 */
|
||||
{//urn:ferd:invoice:rc:comfort
|
||||
if ((!matchesURI(context.getProfile(),"urn:ferd:CrossIndustryDocument:invoice:1p0:basic"))
|
||||
&& (!matchesURI(context.getProfile(),"urn:ferd:CrossIndustryDocument:invoice:1p0:comfort"))
|
||||
&& (!matchesURI(context.getProfile(),"urn:ferd:CrossIndustryDocument:invoice:1p0:extended"))) {
|
||||
context.addResultItem(new ValidationResultItem(ESeverity.error, "Unsupported profile type")
|
||||
.setSection(25).setPart(EPart.xml));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// main schematron validation
|
||||
validateSchematron(zfXML, xsltFilename, 4);
|
||||
|
||||
|
||||
if (context.getVersion().equals("2")
|
||||
&& isEN16931) {
|
||||
//additionally validate against CEN
|
||||
validateSchematron(zfXML, "/xslt/cii16931schematron/EN16931-CII-validation.xslt", 24);
|
||||
}
|
||||
|
||||
|
||||
} catch (IrrecoverableValidationError er) {
|
||||
throw er;
|
||||
} catch (Exception e) {
|
||||
ValidationResultItem vri = new ValidationResultItem(ESeverity.exception, e.getMessage()).setSection(22)
|
||||
.setPart(EPart.xml);
|
||||
StringWriter sw = new StringWriter();
|
||||
PrintWriter pw = new PrintWriter(sw);
|
||||
e.printStackTrace(pw);
|
||||
vri.setStacktrace(sw.toString());
|
||||
context.addResultItem(vri);
|
||||
}
|
||||
|
||||
}
|
||||
long endTime = Calendar.getInstance().getTimeInMillis();
|
||||
|
||||
context.addCustomXML("<info><version>" + ((context.getVersion() != null) ? context.getVersion() : "invalid")
|
||||
+ "</version><profile>" + ((context.getProfile() != null) ? context.getProfile() : "invalid") +
|
||||
"</profile><validator version=\""+Main.class.getPackage().getImplementationVersion()+"\"></validator><rules><fired>"+firedRules+"</fired><failed>"+failedRules+"</failed></rules>" + "<duration unit='ms'>" + (endTime - startXMLTime) + "</duration></info>");
|
||||
|
||||
}
|
||||
|
||||
public void validateSchematron(String xml, String xsltFilename, int section) throws IrrecoverableValidationError{
|
||||
ISchematronResource aResSCH = null;
|
||||
aResSCH = SchematronResourceXSLT.fromClassPath(xsltFilename);
|
||||
if (aResSCH != null) {
|
||||
if (!aResSCH.isValidSchematron()) {
|
||||
throw new IllegalArgumentException(xsltFilename+" is invalid Schematron!");
|
||||
}
|
||||
|
||||
SchematronOutputType sout;
|
||||
try {
|
||||
sout = aResSCH
|
||||
.applySchematronValidationToSVRL(new StreamSource(new StringReader(xml)));
|
||||
} catch (Exception e) {
|
||||
throw new IrrecoverableValidationError(e.getMessage());
|
||||
}
|
||||
|
||||
List<Object> failedAsserts = sout.getActivePatternAndFiredRuleAndFailedAssert();
|
||||
if (failedAsserts.size() > 0) {
|
||||
for (Object object : failedAsserts) {
|
||||
if (object instanceof FailedAssert) {
|
||||
|
||||
FailedAssert failedAssert = (FailedAssert) object;
|
||||
LOGGER.info("FailedAssert ",failedAssert);
|
||||
|
||||
context.addResultItem(new ValidationResultItem(ESeverity.error, failedAssert.getText())
|
||||
.setLocation(failedAssert.getLocation()).setCriterion(failedAssert.getTest()).setSection(section)
|
||||
.setPart(EPart.xml));
|
||||
failedRules++;
|
||||
} else if (object instanceof FiredRule) {
|
||||
firedRules++;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (firedRules==0) {
|
||||
context.addResultItem(new ValidationResultItem(ESeverity.error, "No rules matched, XML to minimal?").setSection(26)
|
||||
.setPart(EPart.xml));
|
||||
|
||||
}
|
||||
for (String currentString : sout.getText()) {
|
||||
// schematronValidationString += "<output>" + currentString + "</output>";
|
||||
}
|
||||
|
||||
// schematronValidationString += new SVRLMarshaller ().getAsString (sout);
|
||||
// returns the complete SVRL
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public int getFiredRules() {
|
||||
return firedRules;
|
||||
}
|
||||
|
||||
public int getFailedRules() {
|
||||
return failedRules;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
280
libraryExtended/src/main/java/ZUV/ZUGFeRDValidator.java
Normal file
280
libraryExtended/src/main/java/ZUV/ZUGFeRDValidator.java
Normal file
@@ -0,0 +1,280 @@
|
||||
package ZUV;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.StringWriter;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
|
||||
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
|
||||
import org.dom4j.DocumentException;
|
||||
import org.dom4j.DocumentHelper;
|
||||
import org.dom4j.io.OutputFormat;
|
||||
import org.dom4j.io.XMLWriter;
|
||||
import org.riversun.bigdoc.bin.BigFileSearcher;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.xml.sax.SAXParseException;
|
||||
|
||||
//abstract class
|
||||
public class ZUGFeRDValidator {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(ZUGFeRDValidator.class.getCanonicalName()); // log
|
||||
// output
|
||||
protected ValidationContext context = new ValidationContext(LOGGER);
|
||||
private String sha1Checksum;
|
||||
private boolean pdfValidity;
|
||||
private boolean displayXMLValidationOutput;
|
||||
private long startTime;
|
||||
private boolean optionsRecognized;
|
||||
private String Signature;
|
||||
private boolean wasCompletelyValid = false;
|
||||
|
||||
/***
|
||||
* within the validation it turned out something in the options was wrong, e.g.
|
||||
* the file did not exist. recommendation to show the help text again. Should be
|
||||
* false if XML or PDF file was found
|
||||
*/
|
||||
public boolean hasOptionsError() {
|
||||
return !optionsRecognized;
|
||||
|
||||
}
|
||||
|
||||
/***
|
||||
* in case the result was not valid the error code of the app will be set to -1
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public boolean wasCompletelyValid() {
|
||||
return wasCompletelyValid;
|
||||
|
||||
}
|
||||
|
||||
/***
|
||||
* performs a validation on the file filename
|
||||
*
|
||||
* @param filename
|
||||
* @return
|
||||
*/
|
||||
public String validate(String filename) {
|
||||
boolean xmlValidity;
|
||||
context.clear();
|
||||
StringBuffer finalStringResult = new StringBuffer();
|
||||
SimpleDateFormat isoDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //$NON-NLS-1$
|
||||
Date date = new Date();
|
||||
|
||||
try {
|
||||
Path path = Paths.get(filename);
|
||||
context.setFilename(path.getFileName().toString());// set filename without path
|
||||
|
||||
} catch (NullPointerException ex) {
|
||||
// ignore
|
||||
}
|
||||
finalStringResult
|
||||
.append("<validation filename='" + context.getFilename() + "' datetime='" + isoDF.format(date) + "'>");
|
||||
|
||||
try {
|
||||
|
||||
if (filename == null) {
|
||||
optionsRecognized = false;
|
||||
context.addResultItem(new ValidationResultItem(ESeverity.fatal, "Filename not specified").setSection(10)
|
||||
.setPart(EPart.pdf));
|
||||
}
|
||||
|
||||
PDFValidator pdfv = new PDFValidator(context);
|
||||
File file = new File(filename);
|
||||
if (!file.exists()) {
|
||||
context.addResultItem(
|
||||
new ValidationResultItem(ESeverity.fatal, "File not found").setSection(1).setPart(EPart.pdf));
|
||||
} else if (file.length() < 32) {
|
||||
// with less then 32 bytes it can not even be a proper XML file
|
||||
context.addResultItem(
|
||||
new ValidationResultItem(ESeverity.fatal, "File too small").setSection(5).setPart(EPart.pdf));
|
||||
} else {
|
||||
BigFileSearcher searcher = new BigFileSearcher();
|
||||
XMLValidator xv = new XMLValidator(context);
|
||||
|
||||
byte[] pdfSignature = { '%', 'P', 'D', 'F' };
|
||||
boolean isPDF = searcher.indexOf(file, pdfSignature) == 0;
|
||||
if (isPDF) {
|
||||
pdfv.setFilename(filename);
|
||||
|
||||
optionsRecognized = true;
|
||||
try {
|
||||
if (!file.exists()) {
|
||||
context.addResultItem(
|
||||
new ValidationResultItem(ESeverity.exception, "File " + filename + " not found")
|
||||
.setSection(1));
|
||||
}
|
||||
} catch (IrrecoverableValidationError irx) {
|
||||
// @todo log
|
||||
}
|
||||
|
||||
finalStringResult.append("<pdf>");
|
||||
optionsRecognized = true;
|
||||
try {
|
||||
pdfv.validate();
|
||||
|
||||
sha1Checksum = calcSHA1(file);
|
||||
|
||||
// Validate PDF
|
||||
|
||||
finalStringResult.append(pdfv.getXMLResult());
|
||||
pdfValidity = context.isValid();
|
||||
|
||||
Signature = context.getSignature();
|
||||
context.clear();
|
||||
if (!pdfValidity) {
|
||||
// clear sets valid to true again
|
||||
context.setInvalid();
|
||||
}
|
||||
if (pdfv.getRawXML() != null) {
|
||||
xv.setStringContent(pdfv.getRawXML());
|
||||
displayXMLValidationOutput = true;
|
||||
} else {
|
||||
context.addResultItem(
|
||||
new ValidationResultItem(ESeverity.exception, "XML could not be extracted")
|
||||
.setSection(17));
|
||||
}
|
||||
} catch (IrrecoverableValidationError irx) {
|
||||
// @todo log
|
||||
}
|
||||
|
||||
finalStringResult.append("</pdf>\n");
|
||||
|
||||
context.clearCustomXML();
|
||||
} else {
|
||||
boolean isXML = false;
|
||||
try {
|
||||
|
||||
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
|
||||
DocumentBuilder db = dbf.newDocumentBuilder();
|
||||
|
||||
Document doc = db.parse(file);
|
||||
|
||||
Element root = doc.getDocumentElement();
|
||||
isXML=true;//no exception so far
|
||||
|
||||
}
|
||||
catch (Exception ex) {
|
||||
// probably no xml file, sth like SAXParseException content not allowed in prolog
|
||||
// ignore isXML is already false
|
||||
// in the tests, this may error-out anyway
|
||||
}
|
||||
if (isXML) {
|
||||
pdfValidity = true;
|
||||
optionsRecognized = true;
|
||||
xv.setFilename(filename);
|
||||
if (file.exists()) {
|
||||
sha1Checksum = calcSHA1(file);
|
||||
}
|
||||
|
||||
displayXMLValidationOutput = true;
|
||||
|
||||
} else {
|
||||
optionsRecognized = false;
|
||||
context.addResultItem(new ValidationResultItem(ESeverity.exception,
|
||||
"File does not look like PDF nor XML (contains neither %PDF nor <?xml)").setSection(8));
|
||||
|
||||
}
|
||||
}
|
||||
if ((optionsRecognized) && (displayXMLValidationOutput)) {
|
||||
finalStringResult.append("<xml>");
|
||||
try {
|
||||
xv.validate();
|
||||
} catch (IrrecoverableValidationError irx) {
|
||||
// @todo log
|
||||
}
|
||||
finalStringResult.append(xv.getXMLResult());
|
||||
finalStringResult.append("</xml>");
|
||||
context.clearCustomXML();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
catch (IrrecoverableValidationError irx) {
|
||||
// @todo log
|
||||
} finally {
|
||||
finalStringResult.append(context.getXMLResult());
|
||||
finalStringResult.append("</validation>");
|
||||
|
||||
}
|
||||
|
||||
OutputFormat format = OutputFormat.createPrettyPrint();
|
||||
StringWriter sw = new StringWriter();
|
||||
org.dom4j.Document document = null;
|
||||
try {
|
||||
document = DocumentHelper.parseText(new String(finalStringResult));
|
||||
} catch (DocumentException e1) {
|
||||
LOGGER.error(e1.getMessage());
|
||||
}
|
||||
XMLWriter writer = new XMLWriter(sw, format);
|
||||
try {
|
||||
writer.write(document);
|
||||
} catch (Exception e) {
|
||||
LOGGER.error(e.getMessage());
|
||||
}
|
||||
|
||||
xmlValidity = context.isValid();
|
||||
long duration = Calendar.getInstance().getTimeInMillis() - startTime;
|
||||
|
||||
LOGGER.info("Parsed PDF:" + (pdfValidity ? "valid" : "invalid") + " XML:" + (xmlValidity ? "valid" : "invalid")
|
||||
+ " Signature:" + Signature + " Checksum:" + sha1Checksum + " Profile:" + context.getProfile()
|
||||
+ " Version:" + context.getVersion() + " Took:" + duration + "ms");
|
||||
wasCompletelyValid = ((pdfValidity) && (xmlValidity));
|
||||
return sw.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the file and calculate the SHA-1 checksum
|
||||
*
|
||||
* @param file the file to read
|
||||
* @return the hex representation of the SHA-1 using uppercase chars
|
||||
* @throws FileNotFoundException if the file does not exist, is a directory
|
||||
* rather than a regular file, or for some
|
||||
* other reason cannot be opened for reading
|
||||
* @throws IOException if an I/O error occurs
|
||||
* @throws NoSuchAlgorithmException should never happen
|
||||
*/
|
||||
private static String calcSHA1(File file) {
|
||||
MessageDigest sha1 = null;
|
||||
try {
|
||||
|
||||
sha1 = MessageDigest.getInstance("SHA-1");
|
||||
InputStream input = new FileInputStream(file);
|
||||
byte[] buffer = new byte[8192];
|
||||
int len = input.read(buffer);
|
||||
|
||||
while (len != -1) {
|
||||
sha1.update(buffer, 0, len);
|
||||
len = input.read(buffer);
|
||||
}
|
||||
input.close();
|
||||
} catch (FileNotFoundException e) {
|
||||
LOGGER.error(e.getMessage(), e);
|
||||
} catch (IOException e) {
|
||||
LOGGER.error(e.getMessage(), e);
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
LOGGER.error(e.getMessage(), e);
|
||||
}
|
||||
if (sha1 == null) {
|
||||
return "";
|
||||
} else {
|
||||
return new HexBinaryAdapter().marshal(sha1.digest());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
151400
libraryExtended/src/main/resources/ZUGFeRDSchematronStylesheetXSLT1.xsl
Normal file
151400
libraryExtended/src/main/resources/ZUGFeRDSchematronStylesheetXSLT1.xsl
Normal file
File diff suppressed because it is too large
Load Diff
142975
libraryExtended/src/main/resources/ZUGFeRDSchematronStylesheetXSLT2.xsl
Normal file
142975
libraryExtended/src/main/resources/ZUGFeRDSchematronStylesheetXSLT2.xsl
Normal file
File diff suppressed because it is too large
Load Diff
25087
libraryExtended/src/main/resources/ZUGFeRD_1p0.sch
Normal file
25087
libraryExtended/src/main/resources/ZUGFeRD_1p0.sch
Normal file
File diff suppressed because it is too large
Load Diff
297
libraryExtended/src/main/resources/iso_abstract_expand.xsl
Normal file
297
libraryExtended/src/main/resources/iso_abstract_expand.xsl
Normal file
@@ -0,0 +1,297 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><?xar XSLT?>
|
||||
|
||||
<!--
|
||||
OVERVIEW - iso_abstract_expand.xsl
|
||||
|
||||
This is a preprocessor for ISO Schematron, which implements abstract patterns.
|
||||
It also
|
||||
* extracts a particular schema using an ID, where there are multiple
|
||||
schemas, such as when they are embedded in the same NVDL script
|
||||
* experimentally, allows parameter recognition and substitution inside
|
||||
text as well as @context, @test, & @select.
|
||||
|
||||
|
||||
This should be used after iso-dsdl-include.xsl and before the skeleton or
|
||||
meta-stylesheet (e.g. iso-svrl.xsl) . It only requires XSLT 1.
|
||||
|
||||
Each kind of inclusion can be turned off (or on) on the command line.
|
||||
|
||||
-->
|
||||
<!--
|
||||
VERSION INFORMATION
|
||||
2008-09-18 RJ
|
||||
* move out param test from iso:schema template to work with XSLT 1. (Noah Fontes)
|
||||
|
||||
2008-07-29 RJ
|
||||
* Create. Pull out as distinct XSL in its own namespace from old iso_pre_pro.xsl
|
||||
* Put everything in private namespace
|
||||
* Rewrite replace_substring named template so that copyright is clear
|
||||
|
||||
2008-07-24 RJ
|
||||
* correct abstract patterns so for correct names: param/@name and
|
||||
param/@value
|
||||
|
||||
2007-01-12 RJ
|
||||
* Use ISO namespace
|
||||
* Use pattern/@id not pattern/@name
|
||||
* Add Oliver Becker's suggests from old Schematron-love-in list for <copy>
|
||||
* Add XT -ism?
|
||||
2003 RJ
|
||||
* Original written for old namespace
|
||||
* http://www.topologi.com/resources/iso-pre-pro.xsl
|
||||
-->
|
||||
<!--
|
||||
LEGAL INFORMATION
|
||||
|
||||
Copyright (c) 2000-2008 Rick Jelliffe and Academia Sinica Computing Center, Taiwan
|
||||
|
||||
This software is provided 'as-is', without any express or implied warranty.
|
||||
In no event will the authors be held liable for any damages arising from
|
||||
the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it freely,
|
||||
subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not claim
|
||||
that you wrote the original software. If you use this software in a product,
|
||||
an acknowledgment in the product documentation would be appreciated but is
|
||||
not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-->
|
||||
<xslt:stylesheet version="1.0" xmlns:xslt="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:iso="http://purl.oclc.org/dsdl/schematron"
|
||||
xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl"
|
||||
|
||||
xmlns:iae="http://www.schematron.com/namespace/iae"
|
||||
|
||||
>
|
||||
|
||||
<xslt:param name="schema-id"></xslt:param>
|
||||
|
||||
|
||||
<!-- Driver for the mode -->
|
||||
<xsl:template match="/">
|
||||
<xsl:apply-templates select="." mode="iae:go" />
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- ================================================================================== -->
|
||||
<!-- Normal processing rules -->
|
||||
<!-- ================================================================================== -->
|
||||
<!-- Output only the selected schema -->
|
||||
<xslt:template match="iso:schema" >
|
||||
<xsl:if test="string-length($schema-id) =0 or @id= $schema-id ">
|
||||
<xslt:copy>
|
||||
<xslt:copy-of select="@*" />
|
||||
<xslt:apply-templates mode="iae:go" />
|
||||
</xslt:copy>
|
||||
</xsl:if>
|
||||
</xslt:template>
|
||||
|
||||
|
||||
<!-- Strip out any foreign elements above the Schematron schema .
|
||||
-->
|
||||
<xslt:template match="*[not(ancestor-or-self::iso:*)]" mode="iae:go" >
|
||||
<xslt:apply-templates mode="iae:go" />
|
||||
</xslt:template>
|
||||
|
||||
|
||||
<!-- ================================================================================== -->
|
||||
<!-- Handle Schematron abstract pattern preprocessing -->
|
||||
<!-- abstract-to-real calls
|
||||
do-pattern calls
|
||||
macro-expand calls
|
||||
multi-macro-expand
|
||||
replace-substring -->
|
||||
<!-- ================================================================================== -->
|
||||
|
||||
<!--
|
||||
Abstract patterns allow you to say, for example
|
||||
|
||||
<pattern name="htmlTable" is-a="table">
|
||||
<param name="row" value="html:tr"/>
|
||||
<param name="cell" value="html:td" />
|
||||
<param name="table" value="html:table" />
|
||||
</pattern>
|
||||
|
||||
For a good introduction, see Uche Ogbujii's article for IBM DeveloperWorks
|
||||
"Discover the flexibility of Schematron abstract patterns"
|
||||
http://www-128.ibm.com/developerworks/xml/library/x-stron.html
|
||||
However, note that ISO Schematron uses @name and @value attributes on
|
||||
the iso:param element, and @id not @name on the pattern element.
|
||||
|
||||
-->
|
||||
|
||||
<!-- Suppress declarations of abstract patterns -->
|
||||
<xslt:template match="iso:pattern[@abstract='true']" mode="iae:go" >
|
||||
<xslt:comment>Suppressed abstract pattern <xslt:value-of select="@id"/> was here</xslt:comment>
|
||||
</xslt:template>
|
||||
|
||||
|
||||
<!-- Suppress uses of abstract patterns -->
|
||||
<xslt:template match="iso:pattern[@is-a]" mode="iae:go" >
|
||||
|
||||
<xslt:comment>Start pattern based on abstract <xslt:value-of select="@is-a"/></xslt:comment>
|
||||
|
||||
<xslt:call-template name="iae:abstract-to-real" >
|
||||
<xslt:with-param name="caller" select="@id" />
|
||||
<xslt:with-param name="is-a" select="@is-a" />
|
||||
</xslt:call-template>
|
||||
|
||||
</xslt:template>
|
||||
|
||||
|
||||
|
||||
<!-- output everything else unchanged -->
|
||||
<xslt:template match="*" priority="-1" mode="iae:go" >
|
||||
<xslt:copy>
|
||||
<xslt:copy-of select="@*" />
|
||||
<xslt:apply-templates mode="iae:go"/>
|
||||
</xslt:copy>
|
||||
</xslt:template>
|
||||
|
||||
<!-- Templates for macro expansion of abstract patterns -->
|
||||
<!-- Sets up the initial conditions for the recursive call -->
|
||||
<xslt:template name="iae:macro-expand">
|
||||
<xslt:param name="caller"/>
|
||||
<xslt:param name="text" />
|
||||
<xslt:call-template name="iae:multi-macro-expand">
|
||||
<xslt:with-param name="caller" select="$caller"/>
|
||||
<xslt:with-param name="text" select="$text"/>
|
||||
<xslt:with-param name="paramNumber" select="1"/>
|
||||
</xslt:call-template>
|
||||
|
||||
</xslt:template>
|
||||
|
||||
<!-- Template to replace the current parameter and then
|
||||
recurse to replace subsequent parameters. -->
|
||||
|
||||
<xslt:template name="iae:multi-macro-expand">
|
||||
<xslt:param name="caller"/>
|
||||
<xslt:param name="text" />
|
||||
<xslt:param name="paramNumber" />
|
||||
|
||||
|
||||
<xslt:choose>
|
||||
<xslt:when test="//iso:pattern[@id=$caller]/iso:param[ $paramNumber]">
|
||||
|
||||
<xslt:call-template name="iae:multi-macro-expand">
|
||||
<xslt:with-param name="caller" select="$caller"/>
|
||||
<xslt:with-param name="paramNumber" select="$paramNumber + 1"/>
|
||||
<xslt:with-param name="text" >
|
||||
<xslt:call-template name="iae:replace-substring">
|
||||
<xslt:with-param name="original" select="$text"/>
|
||||
<xslt:with-param name="substring"
|
||||
select="concat('$', //iso:pattern[@id=$caller]/iso:param[ $paramNumber ]/@name)"/>
|
||||
<xslt:with-param name="replacement"
|
||||
select="//iso:pattern[@id=$caller]/iso:param[ $paramNumber ]/@value"/>
|
||||
</xslt:call-template>
|
||||
</xslt:with-param>
|
||||
</xslt:call-template>
|
||||
</xslt:when>
|
||||
<xslt:otherwise><xslt:value-of select="$text" /></xslt:otherwise>
|
||||
|
||||
</xslt:choose>
|
||||
</xslt:template>
|
||||
|
||||
|
||||
<!-- generate the real pattern from an abstract pattern + parameters-->
|
||||
<xslt:template name="iae:abstract-to-real" >
|
||||
<xslt:param name="caller"/>
|
||||
<xslt:param name="is-a" />
|
||||
<xslt:for-each select="//iso:pattern[@id= $is-a]">
|
||||
<xslt:copy>
|
||||
|
||||
<xslt:choose>
|
||||
<xslt:when test=" string-length( $caller ) = 0">
|
||||
<xslt:attribute name="id"><xslt:value-of select="concat( generate-id(.) , $is-a)" /></xslt:attribute>
|
||||
</xslt:when>
|
||||
<xslt:otherwise>
|
||||
<xslt:attribute name="id"><xslt:value-of select="$caller" /></xslt:attribute>
|
||||
</xslt:otherwise>
|
||||
</xslt:choose>
|
||||
|
||||
<xslt:apply-templates select="*|text()" mode="iae:do-pattern" >
|
||||
<xslt:with-param name="caller"><xslt:value-of select="$caller"/></xslt:with-param>
|
||||
</xslt:apply-templates>
|
||||
|
||||
</xslt:copy>
|
||||
</xslt:for-each>
|
||||
</xslt:template>
|
||||
|
||||
|
||||
<!-- Generate a non-abstract pattern -->
|
||||
<xslt:template mode="iae:do-pattern" match="*">
|
||||
<xslt:param name="caller"/>
|
||||
<xslt:copy>
|
||||
<xslt:for-each select="@*[name()='test' or name()='context' or name()='select']">
|
||||
<xslt:attribute name="{name()}">
|
||||
<xslt:call-template name="iae:macro-expand">
|
||||
<xslt:with-param name="text"><xslt:value-of select="."/></xslt:with-param>
|
||||
<xslt:with-param name="caller"><xslt:value-of select="$caller"/></xslt:with-param>
|
||||
</xslt:call-template>
|
||||
</xslt:attribute>
|
||||
</xslt:for-each>
|
||||
<xslt:copy-of select="@*[name()!='test'][name()!='context'][name()!='select']" />
|
||||
<xsl:for-each select="node()">
|
||||
<xsl:choose>
|
||||
<!-- Experiment: replace macros in text as well, to allow parameterized assertions
|
||||
and so on, without having to have spurious <iso:value-of> calls and multiple
|
||||
delimiting -->
|
||||
<xsl:when test="self::text()">
|
||||
<xslt:call-template name="iae:macro-expand">
|
||||
<xslt:with-param name="text"><xslt:value-of select="."/></xslt:with-param>
|
||||
<xslt:with-param name="caller"><xslt:value-of select="$caller"/></xslt:with-param>
|
||||
</xslt:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xslt:apply-templates select="." mode="iae:do-pattern">
|
||||
<xslt:with-param name="caller"><xslt:value-of select="$caller"/></xslt:with-param>
|
||||
</xslt:apply-templates>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:for-each>
|
||||
</xslt:copy>
|
||||
</xslt:template>
|
||||
|
||||
<!-- UTILITIES -->
|
||||
<!-- Simple version of replace-substring function -->
|
||||
<xslt:template name="iae:replace-substring">
|
||||
<xslt:param name="original" />
|
||||
<xslt:param name="substring" />
|
||||
<xslt:param name="replacement" select="''"/>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="not($original)" />
|
||||
<xsl:when test="not(string($substring))">
|
||||
<xsl:value-of select="$original" />
|
||||
</xsl:when>
|
||||
<xsl:when test="contains($original, $substring)">
|
||||
<xsl:variable name="before" select="substring-before($original, $substring)" />
|
||||
<xsl:variable name="after" select="substring-after($original, $substring)" />
|
||||
|
||||
<xsl:value-of select="$before" />
|
||||
<xsl:value-of select="$replacement" />
|
||||
<!-- recursion -->
|
||||
<xsl:call-template name="iae:replace-substring">
|
||||
<xsl:with-param name="original" select="$after" />
|
||||
<xsl:with-param name="substring" select="$substring" />
|
||||
<xsl:with-param name="replacement" select="$replacement" />
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<!-- no substitution -->
|
||||
<xsl:value-of select="$original" />
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xslt:template>
|
||||
|
||||
|
||||
|
||||
</xslt:stylesheet>
|
||||
1509
libraryExtended/src/main/resources/iso_dsdl_include.xsl
Normal file
1509
libraryExtended/src/main/resources/iso_dsdl_include.xsl
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,55 @@
|
||||
<?xml version="1.0" ?><?xar XSLT?>
|
||||
<!-- Implementation for the Schematron XML Schema Language.
|
||||
http://www.ascc.net/xml/resource/schematron/schematron.html
|
||||
|
||||
Copyright (c) 2000,2001 Rick Jelliffe and Academia Sinica Computing Center, Taiwan
|
||||
|
||||
This software is provided 'as-is', without any express or implied warranty.
|
||||
In no event will the authors be held liable for any damages arising from
|
||||
the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it freely,
|
||||
subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not claim
|
||||
that you wrote the original software. If you use this software in a product,
|
||||
an acknowledgment in the product documentation would be appreciated but is
|
||||
not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-->
|
||||
|
||||
<!-- Schematron message -->
|
||||
|
||||
<xsl:stylesheet
|
||||
version="1.0"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias">
|
||||
|
||||
<xsl:import href="iso_schematron_skeleton_for_xslt1.xsl"/>
|
||||
|
||||
<xsl:template name="process-prolog">
|
||||
<axsl:output method="text" />
|
||||
</xsl:template>
|
||||
|
||||
<!-- use default rule for process-root: copy contens / ignore title -->
|
||||
<!-- use default rule for process-pattern: ignore name and see -->
|
||||
<!-- use default rule for process-name: output name -->
|
||||
<!-- use default rule for process-assert and process-report:
|
||||
call process-message -->
|
||||
|
||||
<xsl:template name="process-message">
|
||||
<xsl:param name="pattern" />
|
||||
<xsl:param name="role" />
|
||||
<axsl:message>
|
||||
<xsl:apply-templates mode="text"
|
||||
/> (<xsl:value-of select="$pattern" />
|
||||
<xsl:if test="$role"> / <xsl:value-of select="$role" />
|
||||
</xsl:if>)</axsl:message>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
File diff suppressed because it is too large
Load Diff
605
libraryExtended/src/main/resources/iso_svrl_for_xslt1.xsl
Normal file
605
libraryExtended/src/main/resources/iso_svrl_for_xslt1.xsl
Normal file
@@ -0,0 +1,605 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!--
|
||||
ISO_SVRL.xsl
|
||||
|
||||
Implementation of Schematron Validation Report Language from ISO Schematron
|
||||
ISO/IEC 19757 Document Schema Definition Languages (DSDL)
|
||||
Part 3: Rule-based validation Schematron
|
||||
Annex D: Schematron Validation Report Language
|
||||
|
||||
This ISO Standard is available free as a Publicly Available Specification in PDF from ISO.
|
||||
Also see www.schematron.com for drafts and other information.
|
||||
|
||||
This implementation of SVRL is designed to run with the "Skeleton" implementation
|
||||
of Schematron which Oliver Becker devised. The skeleton code provides a
|
||||
Schematron implementation but with named templates for handling all output;
|
||||
the skeleton provides basic templates for output using this API, but client
|
||||
validators can be written to import the skeleton and override the default output
|
||||
templates as required. (In order to understand this, you must understand that
|
||||
a named template such as "process-assert" in this XSLT stylesheet overrides and
|
||||
replaces any template with the same name in the imported skeleton XSLT file.)
|
||||
|
||||
The other important thing to understand in this code is that there are different
|
||||
versions of the Schematron skeleton. These track the development of Schematron through
|
||||
Schematron 1.5, Schematron 1.6 and now ISO Schematron. One only skeleton must be
|
||||
imported. The code has templates for the different skeletons commented out for
|
||||
convenience. ISO Schematron has a different namespace than Schematron 1.5 and 1.6;
|
||||
so the ISO Schematron skeleton has been written itself with an optional import
|
||||
statement to in turn import the Schematron 1.6 skeleton. This will allow you to
|
||||
validate with schemas from either namespace.
|
||||
|
||||
|
||||
History:
|
||||
2010-04-14
|
||||
* Add command line parameter 'terminate' which will terminate on first failed
|
||||
assert and (optionally) successful report.
|
||||
2009-03-18
|
||||
* Fix attribute with space "see " which generates wrong name in some processors
|
||||
2008-08-11
|
||||
* RJ Fix attribute/@select which saxon allows in XSLT 1
|
||||
2008-08-07
|
||||
* RJ Add output-encoding attribute to specify final encoding to use
|
||||
* Alter allow-foreign functionality so that Schematron span, emph and dir elements make
|
||||
it to the output, for better formatting and because span can be used to mark up
|
||||
semantically interesting information embedded in diagnostics, which reduces the
|
||||
need to extend SVRL itself
|
||||
* Diagnostic-reference had an invalid attribute @id that duplicated @diagnostic: removed
|
||||
2008-08-06
|
||||
* RJ Fix invalid output: svrl:diagnostic-reference is not contained in an svrl:text
|
||||
* Output comment to SVRL file giving filename if available (from command-line parameter)
|
||||
2008-08-04
|
||||
* RJ move sch: prefix to schold: prefix to prevent confusion (we want people to
|
||||
be able to switch from old namespace to new namespace without changing the
|
||||
sch: prefix, so it is better to keep that prefix completely out of the XSLT)
|
||||
* Extra signature fixes (PH)
|
||||
2008-08-03
|
||||
* Repair missing class parameter on process-p
|
||||
2008-07-31
|
||||
* Update skeleton names
|
||||
2007-04-03
|
||||
* Add option generate-fired-rule (RG)
|
||||
2007-02-07
|
||||
* Prefer true|false for parameters. But allow yes|no on some old for compatibility
|
||||
* DP Diagnostics output to svrl:text. Diagnosis put out after assertion text.
|
||||
* Removed non-SVRL elements and attributes: better handled as an extra layer that invokes this one
|
||||
* Add more formal parameters
|
||||
* Correct confusion between $schemaVersion and $queryBinding
|
||||
* Indent
|
||||
* Validate against RNC schemas for XSLT 1 and 2 (with regex tests removed)
|
||||
* Validate output with UniversalTest.sch against RNC schema for ISO SVRL
|
||||
|
||||
2007-02-01
|
||||
* DP. Update formal parameters of overriding named templates to handle more attributes.
|
||||
* DP. Refactor handling of rich and linkable parameters to a named template.
|
||||
|
||||
2007-01-22
|
||||
* DP change svrl:ns to svrl:ns-in-attribute-value
|
||||
* Change default when no queryBinding from "unknown" to "xslt"
|
||||
|
||||
2007-01-18:
|
||||
* Improve documentation
|
||||
* KH Add command-line options to generate paths or not
|
||||
* Use axsl:attribute rather than xsl:attribute to shut XSLT2 up
|
||||
* Add extra command-line options to pass to the iso_schematron_skeleton
|
||||
|
||||
2006-12-01: iso_svrl.xsl Rick Jelliffe,
|
||||
* update namespace,
|
||||
* update phase handling,
|
||||
* add flag param to process-assert and process-report & @ flag on output
|
||||
|
||||
2001: Conformance1-5.xsl Rick Jelliffe,
|
||||
* Created, using the skeleton code contributed by Oliver Becker
|
||||
-->
|
||||
<!--
|
||||
Derived from Conformance1-5.xsl.
|
||||
|
||||
Copyright (c) 2001-2010 Rick Jelliffe and Academia Sinica Computing Center, Taiwan
|
||||
|
||||
This software is provided 'as-is', without any express or implied warranty.
|
||||
In no event will the authors be held liable for any damages arising from
|
||||
the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it freely,
|
||||
subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not claim
|
||||
that you wrote the original software. If you use this software in a product,
|
||||
an acknowledgment in the product documentation would be appreciated but is
|
||||
not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-->
|
||||
|
||||
<!-- Ideas nabbed from schematrons by Francis N., Miloslav N. and David C. -->
|
||||
|
||||
<!-- The command-line parameters are:
|
||||
phase NMTOKEN | "#ALL" (default) Select the phase for validation
|
||||
allow-foreign "true" | "false" (default) Pass non-Schematron elements and rich markup to the generated stylesheet
|
||||
diagnose= true | false|yes|no Add the diagnostics to the assertion test in reports (yes|no are obsolete)
|
||||
generate-paths=true|false|yes|no generate the @location attribute with XPaths (yes|no are obsolete)
|
||||
sch.exslt.imports semi-colon delimited string of filenames for some EXSLT implementations
|
||||
optimize "visit-no-attributes" Use only when the schema has no attributes as the context nodes
|
||||
generate-fired-rule "true"(default) | "false" Generate fired-rule elements
|
||||
terminate= yes | no | true | false | assert Terminate on the first failed assertion or successful report
|
||||
Note: whether any output at all is generated depends on the XSLT implementation.
|
||||
-->
|
||||
|
||||
<xsl:stylesheet
|
||||
version="1.0"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias"
|
||||
xmlns:schold="http://www.ascc.net/xml/schematron"
|
||||
xmlns:iso="http://purl.oclc.org/dsdl/schematron"
|
||||
xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
||||
>
|
||||
|
||||
<!-- Select the import statement and adjust the path as
|
||||
necessary for your system.
|
||||
If not XSLT2 then also remove svrl:active-pattern/@document="{document-uri()}" from process-pattern()
|
||||
-->
|
||||
<!--
|
||||
<xsl:import href="iso_schematron_skeleton_for_saxon.xsl"/>
|
||||
-->
|
||||
|
||||
<xsl:import href="iso_schematron_skeleton_for_xslt1.xsl"/>
|
||||
<!--
|
||||
<xsl:import href="iso_schematron_skeleton.xsl"/>
|
||||
<xsl:import href="skeleton1-5.xsl"/>
|
||||
<xsl:import href="skeleton1-6.xsl"/>
|
||||
-->
|
||||
|
||||
<xsl:param name="diagnose" >true</xsl:param>
|
||||
<xsl:param name="phase" >
|
||||
<xsl:choose>
|
||||
<!-- Handle Schematron 1.5 and 1.6 phases -->
|
||||
<xsl:when test="//schold:schema/@defaultPhase">
|
||||
<xsl:value-of select="//schold:schema/@defaultPhase"/>
|
||||
</xsl:when>
|
||||
<!-- Handle ISO Schematron phases -->
|
||||
<xsl:when test="//iso:schema/@defaultPhase">
|
||||
<xsl:value-of select="//iso:schema/@defaultPhase"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>#ALL</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:param>
|
||||
<xsl:param name="allow-foreign" >false</xsl:param>
|
||||
<xsl:param name="generate-paths" >true</xsl:param>
|
||||
<xsl:param name="generate-fired-rule" >true</xsl:param>
|
||||
<xsl:param name="optimize"/>
|
||||
|
||||
<xsl:param name="output-encoding" ></xsl:param>
|
||||
|
||||
<!-- e.g. saxon file.xml file.xsl "sch.exslt.imports=.../string.xsl;.../math.xsl" -->
|
||||
<xsl:param name="sch.exslt.imports" />
|
||||
|
||||
|
||||
|
||||
<!-- Experimental: If this file called, then must be generating svrl -->
|
||||
<xsl:variable name="svrlTest" select="true()" />
|
||||
|
||||
|
||||
|
||||
<!-- ================================================================ -->
|
||||
|
||||
<xsl:template name="process-prolog">
|
||||
<axsl:output method="xml" omit-xml-declaration="no" standalone="yes"
|
||||
indent="yes">
|
||||
<xsl:if test=" string-length($output-encoding) > 0">
|
||||
<xsl:attribute name="encoding"><xsl:value-of select=" $output-encoding" /></xsl:attribute>
|
||||
</xsl:if>
|
||||
</axsl:output>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<!-- Overrides skeleton.xsl -->
|
||||
<xsl:template name="process-root">
|
||||
<xsl:param name="title"/>
|
||||
<xsl:param name="contents" />
|
||||
<xsl:param name="queryBinding" >xslt1</xsl:param>
|
||||
<xsl:param name="schemaVersion" />
|
||||
<xsl:param name="id" />
|
||||
<xsl:param name="version"/>
|
||||
<!-- "Rich" parameters -->
|
||||
<xsl:param name="fpi" />
|
||||
<xsl:param name="icon" />
|
||||
<xsl:param name="lang" />
|
||||
<xsl:param name="see" />
|
||||
<xsl:param name="space" />
|
||||
|
||||
<svrl:schematron-output title="{$title}" schemaVersion="{$schemaVersion}" >
|
||||
<xsl:if test=" string-length( normalize-space( $phase )) > 0 and
|
||||
not( normalize-space( $phase ) = '#ALL') ">
|
||||
<axsl:attribute name="phase">
|
||||
<xsl:value-of select=" $phase " />
|
||||
</axsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:if test=" $allow-foreign = 'true'">
|
||||
</xsl:if>
|
||||
<xsl:if test=" $allow-foreign = 'true'">
|
||||
|
||||
<xsl:call-template name='richParms'>
|
||||
<xsl:with-param name="fpi" select="$fpi" />
|
||||
<xsl:with-param name="icon" select="$icon"/>
|
||||
<xsl:with-param name="lang" select="$lang"/>
|
||||
<xsl:with-param name="see" select="$see" />
|
||||
<xsl:with-param name="space" select="$space" />
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
|
||||
<axsl:comment><axsl:value-of select="$archiveDirParameter"/>  
|
||||
<axsl:value-of select="$archiveNameParameter"/>  
|
||||
<axsl:value-of select="$fileNameParameter"/>  
|
||||
<axsl:value-of select="$fileDirParameter"/></axsl:comment>
|
||||
|
||||
|
||||
<xsl:apply-templates mode="do-schema-p" />
|
||||
<xsl:copy-of select="$contents" />
|
||||
</svrl:schematron-output>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template name="process-assert">
|
||||
<xsl:param name="test"/>
|
||||
<xsl:param name="diagnostics" />
|
||||
<xsl:param name="id" />
|
||||
<xsl:param name="flag" />
|
||||
<!-- "Linkable" parameters -->
|
||||
<xsl:param name="role"/>
|
||||
<xsl:param name="subject"/>
|
||||
<!-- "Rich" parameters -->
|
||||
<xsl:param name="fpi" />
|
||||
<xsl:param name="icon" />
|
||||
<xsl:param name="lang" />
|
||||
<xsl:param name="see" />
|
||||
<xsl:param name="space" />
|
||||
<svrl:failed-assert test="{$test}" >
|
||||
<xsl:if test="string-length( $id ) > 0">
|
||||
<axsl:attribute name="id">
|
||||
<xsl:value-of select=" $id " />
|
||||
</axsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:if test=" string-length( $flag ) > 0">
|
||||
<axsl:attribute name="flag">
|
||||
<xsl:value-of select=" $flag " />
|
||||
</axsl:attribute>
|
||||
</xsl:if>
|
||||
<!-- Process rich attributes. -->
|
||||
<xsl:call-template name="richParms">
|
||||
<xsl:with-param name="fpi" select="$fpi"/>
|
||||
<xsl:with-param name="icon" select="$icon"/>
|
||||
<xsl:with-param name="lang" select="$lang"/>
|
||||
<xsl:with-param name="see" select="$see" />
|
||||
<xsl:with-param name="space" select="$space" />
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name='linkableParms'>
|
||||
<xsl:with-param name="role" select="$role" />
|
||||
<xsl:with-param name="subject" select="$subject"/>
|
||||
</xsl:call-template>
|
||||
<xsl:if test=" $generate-paths = 'true' or $generate-paths= 'yes' ">
|
||||
<!-- true/false is the new way -->
|
||||
<axsl:attribute name="location">
|
||||
<axsl:apply-templates select="." mode="schematron-get-full-path"/>
|
||||
</axsl:attribute>
|
||||
</xsl:if>
|
||||
|
||||
<svrl:text>
|
||||
<xsl:apply-templates mode="text" />
|
||||
|
||||
</svrl:text>
|
||||
<xsl:if test="$diagnose = 'yes' or $diagnose= 'true' ">
|
||||
<!-- true/false is the new way -->
|
||||
<xsl:call-template name="diagnosticsSplit">
|
||||
<xsl:with-param name="str" select="$diagnostics"/>
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
</svrl:failed-assert>
|
||||
|
||||
|
||||
<xsl:if test=" $terminate = 'yes' or $terminate = 'true' ">
|
||||
<axsl:message terminate="yes">TERMINATING</axsl:message>
|
||||
</xsl:if>
|
||||
<xsl:if test=" $terminate = 'assert' ">
|
||||
<axsl:message terminate="yes">TERMINATING</axsl:message>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="process-report">
|
||||
<xsl:param name="id"/>
|
||||
<xsl:param name="test"/>
|
||||
<xsl:param name="diagnostics"/>
|
||||
<xsl:param name="flag" />
|
||||
<!-- "Linkable" parameters -->
|
||||
<xsl:param name="role"/>
|
||||
<xsl:param name="subject"/>
|
||||
<!-- "Rich" parameters -->
|
||||
<xsl:param name="fpi" />
|
||||
<xsl:param name="icon" />
|
||||
<xsl:param name="lang" />
|
||||
<xsl:param name="see" />
|
||||
<xsl:param name="space" />
|
||||
<svrl:successful-report test="{$test}" >
|
||||
<xsl:if test=" string-length( $id ) > 0">
|
||||
<axsl:attribute name="id">
|
||||
<xsl:value-of select=" $id " />
|
||||
</axsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:if test=" string-length( $flag ) > 0">
|
||||
<axsl:attribute name="flag">
|
||||
<xsl:value-of select=" $flag " />
|
||||
</axsl:attribute>
|
||||
</xsl:if>
|
||||
|
||||
<!-- Process rich attributes. -->
|
||||
<xsl:call-template name="richParms">
|
||||
<xsl:with-param name="fpi" select="$fpi"/>
|
||||
<xsl:with-param name="icon" select="$icon"/>
|
||||
<xsl:with-param name="lang" select="$lang"/>
|
||||
<xsl:with-param name="see" select="$see" />
|
||||
<xsl:with-param name="space" select="$space" />
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name='linkableParms'>
|
||||
<xsl:with-param name="role" select="$role" />
|
||||
<xsl:with-param name="subject" select="$subject"/>
|
||||
</xsl:call-template>
|
||||
<xsl:if test=" $generate-paths = 'yes' or $generate-paths = 'true' ">
|
||||
<!-- true/false is the new way -->
|
||||
<axsl:attribute name="location">
|
||||
<axsl:apply-templates select="." mode="schematron-get-full-path"/>
|
||||
</axsl:attribute>
|
||||
</xsl:if>
|
||||
|
||||
<svrl:text>
|
||||
<xsl:apply-templates mode="text" />
|
||||
|
||||
</svrl:text>
|
||||
<xsl:if test="$diagnose = 'yes' or $diagnose='true' ">
|
||||
<!-- true/false is the new way -->
|
||||
<xsl:call-template name="diagnosticsSplit">
|
||||
<xsl:with-param name="str" select="$diagnostics"/>
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
</svrl:successful-report>
|
||||
|
||||
|
||||
<xsl:if test=" $terminate = 'yes' or $terminate = 'true' ">
|
||||
<axsl:message terminate="yes">TERMINATING</axsl:message>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- Overrides skeleton -->
|
||||
<xsl:template name="process-dir" >
|
||||
<xsl:param name="value" />
|
||||
<xsl:choose>
|
||||
<xsl:when test=" $allow-foreign = 'true'">
|
||||
<xsl:copy-of select="."/>
|
||||
</xsl:when>
|
||||
|
||||
<xsl:otherwise>
|
||||
<!-- We generate too much whitespace rather than risking concatenation -->
|
||||
<axsl:text> </axsl:text>
|
||||
<xsl:apply-templates mode="inline-text"/>
|
||||
<axsl:text> </axsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="process-diagnostic">
|
||||
<xsl:param name="id"/>
|
||||
<!-- Rich parameters -->
|
||||
<xsl:param name="fpi" />
|
||||
<xsl:param name="icon" />
|
||||
<xsl:param name="lang" />
|
||||
<xsl:param name="see" />
|
||||
<xsl:param name="space" />
|
||||
<svrl:diagnostic-reference diagnostic="{$id}" >
|
||||
|
||||
<xsl:call-template name="richParms">
|
||||
<xsl:with-param name="fpi" select="$fpi"/>
|
||||
<xsl:with-param name="icon" select="$icon"/>
|
||||
<xsl:with-param name="lang" select="$lang"/>
|
||||
<xsl:with-param name="see" select="$see" />
|
||||
<xsl:with-param name="space" select="$space" />
|
||||
</xsl:call-template>
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
|
||||
<xsl:apply-templates mode="text"/>
|
||||
|
||||
</svrl:diagnostic-reference>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- Overrides skeleton -->
|
||||
<xsl:template name="process-emph" >
|
||||
<xsl:param name="class" />
|
||||
<xsl:choose>
|
||||
<xsl:when test=" $allow-foreign = 'true'">
|
||||
<xsl:copy-of select="."/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<!-- We generate too much whitespace rather than risking concatenation -->
|
||||
<axsl:text> </axsl:text>
|
||||
<xsl:apply-templates mode="inline-text"/>
|
||||
<axsl:text> </axsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="process-rule">
|
||||
<xsl:param name="id"/>
|
||||
<xsl:param name="context"/>
|
||||
<xsl:param name="flag"/>
|
||||
<!-- "Linkable" parameters -->
|
||||
<xsl:param name="role"/>
|
||||
<xsl:param name="subject"/>
|
||||
<!-- "Rich" parameters -->
|
||||
<xsl:param name="fpi" />
|
||||
<xsl:param name="icon" />
|
||||
<xsl:param name="lang" />
|
||||
<xsl:param name="see" />
|
||||
<xsl:param name="space" />
|
||||
<xsl:if test=" $generate-fired-rule = 'true'">
|
||||
<svrl:fired-rule context="{$context}" >
|
||||
<!-- Process rich attributes. -->
|
||||
<xsl:call-template name="richParms">
|
||||
<xsl:with-param name="fpi" select="$fpi"/>
|
||||
<xsl:with-param name="icon" select="$icon"/>
|
||||
<xsl:with-param name="lang" select="$lang"/>
|
||||
<xsl:with-param name="see" select="$see" />
|
||||
<xsl:with-param name="space" select="$space" />
|
||||
</xsl:call-template>
|
||||
<xsl:if test=" string( $id )">
|
||||
<xsl:attribute name="id">
|
||||
<xsl:value-of select=" $id " />
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:if test=" string-length( $role ) > 0">
|
||||
<xsl:attribute name="role">
|
||||
<xsl:value-of select=" $role " />
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
</svrl:fired-rule>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="process-ns">
|
||||
<xsl:param name="prefix"/>
|
||||
<xsl:param name="uri"/>
|
||||
<svrl:ns-prefix-in-attribute-values uri="{$uri}" prefix="{$prefix}" />
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="process-p">
|
||||
<xsl:param name="icon"/>
|
||||
<xsl:param name="class"/>
|
||||
<xsl:param name="id"/>
|
||||
<xsl:param name="lang"/>
|
||||
|
||||
<svrl:text>
|
||||
<xsl:apply-templates mode="text"/>
|
||||
</svrl:text>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="process-pattern">
|
||||
<xsl:param name="name"/>
|
||||
<xsl:param name="id"/>
|
||||
<xsl:param name="is-a"/>
|
||||
|
||||
<!-- "Rich" parameters -->
|
||||
<xsl:param name="fpi" />
|
||||
<xsl:param name="icon" />
|
||||
<xsl:param name="lang" />
|
||||
<xsl:param name="see" />
|
||||
<xsl:param name="space" />
|
||||
<svrl:active-pattern >
|
||||
<xsl:if test=" string( $id )">
|
||||
<axsl:attribute name="id">
|
||||
<xsl:value-of select=" $id " />
|
||||
</axsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:if test=" string( $name )">
|
||||
<axsl:attribute name="name">
|
||||
<xsl:value-of select=" $name " />
|
||||
</axsl:attribute>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:call-template name='richParms'>
|
||||
<xsl:with-param name="fpi" select="$fpi"/>
|
||||
<xsl:with-param name="icon" select="$icon"/>
|
||||
<xsl:with-param name="lang" select="$lang"/>
|
||||
<xsl:with-param name="see" select="$see" />
|
||||
<xsl:with-param name="space" select="$space" />
|
||||
</xsl:call-template>
|
||||
|
||||
<!-- ?? report that this screws up iso:title processing -->
|
||||
<xsl:apply-templates mode="do-pattern-p"/>
|
||||
<!-- ?? Seems that this apply-templates is never triggered DP -->
|
||||
<axsl:apply-templates />
|
||||
</svrl:active-pattern>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Overrides skeleton -->
|
||||
<xsl:template name="process-message" >
|
||||
<xsl:param name="pattern"/>
|
||||
<xsl:param name="role"/>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- Overrides skeleton -->
|
||||
<xsl:template name="process-span" >
|
||||
<xsl:param name="class" />
|
||||
<xsl:choose>
|
||||
<xsl:when test=" $allow-foreign = 'true'">
|
||||
<xsl:copy-of select="."/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<!-- We generate too much whitespace rather than risking concatenation -->
|
||||
<axsl:text> </axsl:text>
|
||||
<xsl:apply-templates mode="inline-text"/>
|
||||
<axsl:text> </axsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<!-- =========================================================================== -->
|
||||
<!-- processing rich parameters. -->
|
||||
<xsl:template name='richParms'>
|
||||
<!-- "Rich" parameters -->
|
||||
<xsl:param name="fpi" />
|
||||
<xsl:param name="icon" />
|
||||
<xsl:param name="lang" />
|
||||
<xsl:param name="see" />
|
||||
<xsl:param name="space" />
|
||||
<!-- Process rich attributes. -->
|
||||
<xsl:if test=" $allow-foreign = 'true'">
|
||||
<xsl:if test="string($fpi)">
|
||||
<axsl:attribute name="fpi">
|
||||
<xsl:value-of select="$fpi"/>
|
||||
</axsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:if test="string($icon)">
|
||||
<axsl:attribute name="icon">
|
||||
<xsl:value-of select="$icon"/>
|
||||
</axsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:if test="string($see)">
|
||||
<axsl:attribute name="see">
|
||||
<xsl:value-of select="$see"/>
|
||||
</axsl:attribute>
|
||||
</xsl:if>
|
||||
</xsl:if>
|
||||
<xsl:if test="string($space)">
|
||||
<axsl:attribute name="xml:space">
|
||||
<xsl:value-of select="$space"/>
|
||||
</axsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:if test="string($lang)">
|
||||
<axsl:attribute name="xml:lang">
|
||||
<xsl:value-of select="$lang"/>
|
||||
</axsl:attribute>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<!-- processing linkable parameters. -->
|
||||
<xsl:template name='linkableParms'>
|
||||
<xsl:param name="role"/>
|
||||
<xsl:param name="subject"/>
|
||||
|
||||
<!-- ISO SVRL has a role attribute to match the Schematron role attribute -->
|
||||
<xsl:if test=" string($role )">
|
||||
<axsl:attribute name="role">
|
||||
<xsl:value-of select=" $role " />
|
||||
</axsl:attribute>
|
||||
</xsl:if>
|
||||
<!-- ISO SVRL does not have a subject attribute to match the Schematron subject attribute.
|
||||
Instead, the Schematron subject attribute is folded into the location attribute -->
|
||||
</xsl:template>
|
||||
|
||||
|
||||
</xsl:stylesheet>
|
||||
|
||||
29
libraryExtended/src/main/resources/logback.xml
Normal file
29
libraryExtended/src/main/resources/logback.xml
Normal file
@@ -0,0 +1,29 @@
|
||||
<configuration>
|
||||
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
|
||||
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<!-- Daily rollover -->
|
||||
<fileNamePattern>log/ZUV-%d{yyyy-MM}.log</fileNamePattern>
|
||||
|
||||
<!-- Keep 5 years worth of history -->
|
||||
<maxHistory>60</maxHistory>
|
||||
</rollingPolicy>
|
||||
|
||||
<encoder>
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- Configure so that it outputs to both console and log file -->
|
||||
<root level="INFO">
|
||||
<appender-ref ref="FILE" />
|
||||
<!-- appender-ref ref="STDOUT" /-->
|
||||
</root>
|
||||
</configuration>
|
||||
@@ -0,0 +1,97 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema
|
||||
xmlns:adt="http://4s4u.de/additional_data/adcollection/base_all_1.0"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="http://4s4u.de/additional_data/adcollection/base_all_1.0"
|
||||
elementFormDefault="qualified">
|
||||
<!-- # Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
met: # * Redistributions of source code must retain the above copyright #
|
||||
notice, this list of conditions and the following disclaimer. # * Redistributions
|
||||
in binary form must reproduce the above copyright # notice, this list of
|
||||
conditions and the following disclaimer in the # documentation and/or other
|
||||
materials provided with the distribution. # * The name of the authors may
|
||||
not be used to endorse or promote products # derived from this software without
|
||||
specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
|
||||
HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
THE COPYRIGHT # HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY #
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE,
|
||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
|
||||
<xs:element name="additionalOrAlternateData"
|
||||
type="adt:additionalOrAlternativeDataType" />
|
||||
<xs:complexType name="additionalOrAlternativeDataType">
|
||||
<xs:sequence>
|
||||
<xs:element name="referencedData" type="adt:referencedDataType" minOccurs="1" maxOccurs="1" />
|
||||
<xs:element name="additionalData" type="adt:additionalDataType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="alternateData" type="adt:additionalDataType" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="referencedDataType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="type" type="adt:referenceType" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="additionalDataType">
|
||||
<xs:sequence>
|
||||
<xs:element name="data" minOccurs="1" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<!-- this could be more detailed … -->
|
||||
<xs:extension base="xs:anyType">
|
||||
<xs:attribute name="type" type="xs:string" />
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="referencedElement" minOccurs="1"
|
||||
maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="type" type="adt:referenceType" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="alternateDataType">
|
||||
<xs:sequence>
|
||||
<xs:element name="data" minOccurs="1" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<!-- this could be more detailed … -->
|
||||
<xs:extension base="xs:anyType">
|
||||
<xs:attribute name="type" type="xs:string" />
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="referencedElement" minOccurs="1"
|
||||
maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="type" type="adt:referenceType" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="referenceType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="XPath" />
|
||||
<xs:enumeration value="URI" />
|
||||
<!-- and so on … -->
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
20
libraryExtended/src/main/resources/schema/zf1/ZUGFeRD1p0.xsd
Normal file
20
libraryExtended/src/main/resources/schema/zf1/ZUGFeRD1p0.xsd
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:12"
|
||||
xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12"
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15"
|
||||
targetNamespace="urn:ferd:CrossIndustryDocument:invoice:1p0"
|
||||
elementFormDefault="qualified">
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:12" schemaLocation="ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_QualifiedDataType_12.xsd"/>
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12" schemaLocation="ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_12.xsd"/>
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15" schemaLocation="ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_15.xsd"/>
|
||||
<xs:element name="CrossIndustryDocument" type="rsm:CrossIndustryDocumentType"/>
|
||||
<xs:complexType name="CrossIndustryDocumentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SpecifiedExchangedDocumentContext" type="ram:ExchangedDocumentContextType"/>
|
||||
<xs:element name="HeaderExchangedDocument" type="ram:ExchangedDocumentType"/>
|
||||
<xs:element name="SpecifiedSupplyChainTradeTransaction" type="ram:SupplyChainTradeTransactionType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,76 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:12"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15"
|
||||
targetNamespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:12"
|
||||
elementFormDefault="qualified"
|
||||
version="12.0">
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15" schemaLocation="ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_15.xsd"/>
|
||||
<xs:simpleType name="AllowanceChargeReasonCodeContentType">
|
||||
<xs:restriction base="xs:token"/>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="AllowanceChargeReasonCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:AllowanceChargeReasonCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="CountryIDContentType">
|
||||
<xs:restriction base="xs:token"/>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="CountryIDType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:CountryIDContentType"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="DateMandatoryDateTimeType">
|
||||
<xs:union memberTypes="xs:dateTime xs:date"/>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="DeliveryTermsCodeContentType">
|
||||
<xs:restriction base="xs:token"/>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="DeliveryTermsCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:DeliveryTermsCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="DocumentCodeContentType">
|
||||
<xs:restriction base="xs:token"/>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="DocumentCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:DocumentCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="PaymentMeansCodeContentType">
|
||||
<xs:restriction base="xs:token"/>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="PaymentMeansCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:PaymentMeansCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="ReferenceCodeContentType">
|
||||
<xs:restriction base="xs:token"/>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="ReferenceCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:ReferenceCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="TaxCategoryCodeContentType">
|
||||
<xs:restriction base="xs:token"/>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="TaxCategoryCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:TaxCategoryCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="TaxTypeCodeContentType">
|
||||
<xs:restriction base="xs:token"/>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="TaxTypeCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:TaxTypeCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,352 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:12"
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15"
|
||||
targetNamespace="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12"
|
||||
elementFormDefault="qualified"
|
||||
version="12.0">
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:12" schemaLocation="ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_QualifiedDataType_12.xsd"/>
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15" schemaLocation="ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_15.xsd"/>
|
||||
<xs:complexType name="CreditorFinancialAccountType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IBANID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="AccountName" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="ProprietaryID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CreditorFinancialInstitutionType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BICID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="GermanBankleitzahlID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="Name" type="udt:TextType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DebtorFinancialAccountType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IBANID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="ProprietaryID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DebtorFinancialInstitutionType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BICID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="GermanBankleitzahlID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="Name" type="udt:TextType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DocumentContextParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DocumentLineDocumentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="LineID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="IncludedNote" type="ram:NoteType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ExchangedDocumentContextType">
|
||||
<xs:sequence>
|
||||
<xs:element name="TestIndicator" type="udt:IndicatorType" minOccurs="0"/>
|
||||
<xs:element name="BusinessProcessSpecifiedDocumentContextParameter" type="ram:DocumentContextParameterType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="GuidelineSpecifiedDocumentContextParameter" type="ram:DocumentContextParameterType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ExchangedDocumentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="Name" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="TypeCode" type="qdt:DocumentCodeType" minOccurs="0"/>
|
||||
<xs:element name="IssueDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
<xs:element name="CopyIndicator" type="udt:IndicatorType" minOccurs="0"/>
|
||||
<xs:element name="LanguageID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="IncludedNote" type="ram:NoteType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="EffectiveSpecifiedPeriod" type="ram:SpecifiedPeriodType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LogisticsServiceChargeType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Description" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="AppliedAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="AppliedTradeTax" type="ram:TradeTaxType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LogisticsTransportMovementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ModeCode" type="udt:CodeType" minOccurs="0"/>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="NoteType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ContentCode" type="udt:CodeType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="Content" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="SubjectCode" type="udt:CodeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ProductCharacteristicType">
|
||||
<xs:sequence>
|
||||
<xs:element name="TypeCode" type="udt:CodeType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="Description" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="ValueMeasure" type="udt:MeasureType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="Value" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ProductClassificationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ClassCode" type="udt:CodeType" minOccurs="0"/>
|
||||
<xs:element name="ClassName" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ReferencedDocumentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IssueDateTime" type="qdt:DateMandatoryDateTimeType" minOccurs="0"/>
|
||||
<xs:element name="LineID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="TypeCode" type="qdt:DocumentCodeType" minOccurs="0"/>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="ReferenceTypeCode" type="qdt:ReferenceCodeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ReferencedProductType">
|
||||
<xs:sequence>
|
||||
<xs:element name="GlobalID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="SellerAssignedID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="BuyerAssignedID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="Name" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="Description" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="UnitQuantity" type="udt:QuantityType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SpecifiedPeriodType">
|
||||
<xs:sequence>
|
||||
<xs:element name="StartDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
<xs:element name="EndDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
<xs:element name="CompleteDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainConsignmentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SpecifiedLogisticsTransportMovement" type="ram:LogisticsTransportMovementType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainEventType">
|
||||
<xs:sequence>
|
||||
<xs:element name="OccurrenceDateTime" type="udt:DateTimeType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainTradeAgreementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BuyerReference" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="SellerTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="BuyerTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="ProductEndUserTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="ApplicableTradeDeliveryTerms" type="ram:TradeDeliveryTermsType" minOccurs="0"/>
|
||||
<xs:element name="BuyerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="ContractReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="AdditionalReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="GrossPriceProductTradePrice" type="ram:TradePriceType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="NetPriceProductTradePrice" type="ram:TradePriceType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="CustomerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainTradeDeliveryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BilledQuantity" type="udt:QuantityType" minOccurs="0"/>
|
||||
<xs:element name="ChargeFreeQuantity" type="udt:QuantityType" minOccurs="0"/>
|
||||
<xs:element name="PackageQuantity" type="udt:QuantityType" minOccurs="0"/>
|
||||
<xs:element name="RelatedSupplyChainConsignment" type="ram:SupplyChainConsignmentType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="ShipToTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="UltimateShipToTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="ShipFromTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="ActualDeliverySupplyChainEvent" type="ram:SupplyChainEventType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="DespatchAdviceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
<xs:element name="ReceivingAdviceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="DeliveryNoteReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainTradeLineItemType">
|
||||
<xs:sequence>
|
||||
<xs:element name="AssociatedDocumentLineDocument" type="ram:DocumentLineDocumentType" minOccurs="0"/>
|
||||
<xs:element name="SpecifiedSupplyChainTradeAgreement" type="ram:SupplyChainTradeAgreementType" minOccurs="0"/>
|
||||
<xs:element name="SpecifiedSupplyChainTradeDelivery" type="ram:SupplyChainTradeDeliveryType" minOccurs="0"/>
|
||||
<xs:element name="SpecifiedSupplyChainTradeSettlement" type="ram:SupplyChainTradeSettlementType" minOccurs="0"/>
|
||||
<xs:element name="SpecifiedTradeProduct" type="ram:TradeProductType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainTradeSettlementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PaymentReference" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="InvoiceCurrencyCode" type="udt:CodeType" minOccurs="0"/>
|
||||
<xs:element name="InvoiceeTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="PayeeTradeParty" type="ram:TradePartyType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="SpecifiedTradeSettlementPaymentMeans" type="ram:TradeSettlementPaymentMeansType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="ApplicableTradeTax" type="ram:TradeTaxType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="BillingSpecifiedPeriod" type="ram:SpecifiedPeriodType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="SpecifiedTradeAllowanceCharge" type="ram:TradeAllowanceChargeType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="SpecifiedLogisticsServiceCharge" type="ram:LogisticsServiceChargeType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="SpecifiedTradePaymentTerms" type="ram:TradePaymentTermsType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="SpecifiedTradeAccountingAccount" type="ram:TradeAccountingAccountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="SpecifiedTradeSettlementMonetarySummation" type="ram:TradeSettlementMonetarySummationType" minOccurs="0"/>
|
||||
<xs:element name="ReceivableSpecifiedTradeAccountingAccount" type="ram:TradeAccountingAccountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainTradeTransactionType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ApplicableSupplyChainTradeAgreement" type="ram:SupplyChainTradeAgreementType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="ApplicableSupplyChainTradeDelivery" type="ram:SupplyChainTradeDeliveryType" minOccurs="0"/>
|
||||
<xs:element name="ApplicableSupplyChainTradeSettlement" type="ram:SupplyChainTradeSettlementType" minOccurs="0"/>
|
||||
<xs:element name="IncludedSupplyChainTradeLineItem" type="ram:SupplyChainTradeLineItemType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxRegistrationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeAccountingAccountType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeAddressType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PostcodeCode" type="udt:CodeType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="LineOne" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="LineTwo" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="CityName" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="CountryID" type="qdt:CountryIDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeAllowanceChargeType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ChargeIndicator" type="udt:IndicatorType" minOccurs="0"/>
|
||||
<xs:element name="SequenceNumeric" type="udt:NumericType" minOccurs="0"/>
|
||||
<xs:element name="CalculationPercent" type="udt:PercentType" minOccurs="0"/>
|
||||
<xs:element name="BasisAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="BasisQuantity" type="udt:QuantityType" minOccurs="0"/>
|
||||
<xs:element name="ActualAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="ReasonCode" type="qdt:AllowanceChargeReasonCodeType" minOccurs="0"/>
|
||||
<xs:element name="Reason" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="CategoryTradeTax" type="ram:TradeTaxType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeContactType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PersonName" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="DepartmentName" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="TelephoneUniversalCommunication" type="ram:UniversalCommunicationType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="FaxUniversalCommunication" type="ram:UniversalCommunicationType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="EmailURIUniversalCommunication" type="ram:UniversalCommunicationType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeCountryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="qdt:CountryIDType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeDeliveryTermsType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DeliveryTypeCode" type="qdt:DeliveryTermsCodeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePartyType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="GlobalID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="Name" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="DefinedTradeContact" type="ram:TradeContactType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="PostalTradeAddress" type="ram:TradeAddressType" minOccurs="0"/>
|
||||
<xs:element name="SpecifiedTaxRegistration" type="ram:TaxRegistrationType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePaymentDiscountTermsType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BasisDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
<xs:element name="BasisPeriodMeasure" type="udt:MeasureType" minOccurs="0"/>
|
||||
<xs:element name="BasisAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="CalculationPercent" type="udt:PercentType" minOccurs="0"/>
|
||||
<xs:element name="ActualDiscountAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePaymentPenaltyTermsType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BasisDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
<xs:element name="BasisPeriodMeasure" type="udt:MeasureType" minOccurs="0"/>
|
||||
<xs:element name="BasisAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="CalculationPercent" type="udt:PercentType" minOccurs="0"/>
|
||||
<xs:element name="ActualPenaltyAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePaymentTermsType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Description" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="DueDateDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
<xs:element name="PartialPaymentAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="ApplicableTradePaymentPenaltyTerms" type="ram:TradePaymentPenaltyTermsType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="ApplicableTradePaymentDiscountTerms" type="ram:TradePaymentDiscountTermsType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePriceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ChargeAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="BasisQuantity" type="udt:QuantityType" minOccurs="0"/>
|
||||
<xs:element name="AppliedTradeAllowanceCharge" type="ram:TradeAllowanceChargeType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeProductType">
|
||||
<xs:sequence>
|
||||
<xs:element name="GlobalID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="SellerAssignedID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="BuyerAssignedID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="Name" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="Description" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="ApplicableProductCharacteristic" type="ram:ProductCharacteristicType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="DesignatedProductClassification" type="ram:ProductClassificationType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="OriginTradeCountry" type="ram:TradeCountryType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="IncludedReferencedProduct" type="ram:ReferencedProductType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeSettlementMonetarySummationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="LineTotalAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="ChargeTotalAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="AllowanceTotalAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="TaxBasisTotalAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="TaxTotalAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="GrandTotalAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="TotalPrepaidAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="TotalAllowanceChargeAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="DuePayableAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeSettlementPaymentMeansType">
|
||||
<xs:sequence>
|
||||
<xs:element name="TypeCode" type="qdt:PaymentMeansCodeType" minOccurs="0"/>
|
||||
<xs:element name="Information" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="PayerPartyDebtorFinancialAccount" type="ram:DebtorFinancialAccountType" minOccurs="0"/>
|
||||
<xs:element name="PayeePartyCreditorFinancialAccount" type="ram:CreditorFinancialAccountType" minOccurs="0"/>
|
||||
<xs:element name="PayerSpecifiedDebtorFinancialInstitution" type="ram:DebtorFinancialInstitutionType" minOccurs="0"/>
|
||||
<xs:element name="PayeeSpecifiedCreditorFinancialInstitution" type="ram:CreditorFinancialInstitutionType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeTaxType">
|
||||
<xs:sequence>
|
||||
<xs:element name="CalculatedAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="TypeCode" type="qdt:TaxTypeCodeType" minOccurs="0"/>
|
||||
<xs:element name="ExemptionReason" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="BasisAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="LineTotalBasisAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="AllowanceChargeBasisAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="CategoryCode" type="qdt:TaxCategoryCodeType" minOccurs="0"/>
|
||||
<xs:element name="ApplicablePercent" type="udt:PercentType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="UniversalCommunicationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="URIID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="CompleteNumber" type="udt:TextType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,95 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15"
|
||||
elementFormDefault="qualified"
|
||||
version="15.0">
|
||||
<xs:complexType name="AmountType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal">
|
||||
<xs:attribute name="currencyID" type="udt:AmountTypeCurrencyIDContentType"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="AmountTypeCurrencyIDContentType">
|
||||
<xs:restriction base="xs:token"/>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="CodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:token">
|
||||
<xs:attribute name="listID" type="xs:token"/>
|
||||
<xs:attribute name="listVersionID" type="xs:token"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DateTimeType">
|
||||
<xs:choice>
|
||||
<xs:element name="DateTimeString">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="format" type="xs:string"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="IDType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:token">
|
||||
<xs:attribute name="schemeID" type="xs:token"/>
|
||||
<xs:attribute name="schemeAgencyID" type="udt:IDTypeSchemeAgencyIDContentType"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="IDTypeSchemeAgencyIDContentType">
|
||||
<xs:restriction base="xs:token"/>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="IndicatorType">
|
||||
<xs:choice>
|
||||
<xs:element name="Indicator" type="xs:boolean"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="MeasureType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal">
|
||||
<xs:attribute name="unitCode" type="udt:MeasureTypeUnitCodeContentType"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="MeasureTypeUnitCodeContentType">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="3"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="NumericType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PercentType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="QuantityType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal">
|
||||
<xs:attribute name="unitCode" type="udt:QuantityTypeUnitCodeContentType"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="QuantityTypeUnitCodeContentType">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:minLength value="1"/>
|
||||
<xs:maxLength value="3"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="TextType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
||||
xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
targetNamespace="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
|
||||
elementFormDefault="qualified">
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" schemaLocation="FACTUR-X_BASIC-WL_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd"/>
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" schemaLocation="FACTUR-X_BASIC-WL_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd"/>
|
||||
<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"/>
|
||||
<xs:element name="CrossIndustryInvoice" type="rsm:CrossIndustryInvoiceType"/>
|
||||
<xs:complexType name="CrossIndustryInvoiceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ExchangedDocumentContext" type="ram:ExchangedDocumentContextType"/>
|
||||
<xs:element name="ExchangedDocument" type="ram:ExchangedDocumentType"/>
|
||||
<xs:element name="SupplyChainTradeTransaction" type="ram:SupplyChainTradeTransactionType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,788 @@
|
||||
<?xml version="1.0" encoding="UTF-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"/>
|
||||
<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:simpleType>
|
||||
<xs:complexType name="AllowanceChargeReasonCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:AllowanceChargeReasonCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</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="YE"/>
|
||||
<xs:enumeration value="YT"/>
|
||||
<xs:enumeration value="ZA"/>
|
||||
<xs:enumeration value="ZM"/>
|
||||
<xs:enumeration value="ZW"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="CountryIDType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:CountryIDContentType"/>
|
||||
</xs:simpleContent>
|
||||
</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:simpleType>
|
||||
<xs:complexType name="CurrencyCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:CurrencyCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</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="935"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="DocumentCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:DocumentCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="FormattedDateTimeFormatContentType">
|
||||
<xs:restriction base="xs:string"/>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="FormattedDateTimeType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DateTimeString">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="format" type="qdt:FormattedDateTimeFormatContentType" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</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:simpleType>
|
||||
<xs:complexType name="PaymentMeansCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:PaymentMeansCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</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:simpleType>
|
||||
<xs:complexType name="TaxCategoryCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:TaxCategoryCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="TaxTypeCodeContentType">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:enumeration value="VAT"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="TaxTypeCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:TaxTypeCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</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:simpleType>
|
||||
<xs:complexType name="TimeReferenceCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:TimeReferenceCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,194 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
targetNamespace="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
elementFormDefault="qualified">
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" schemaLocation="FACTUR-X_BASIC-WL_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd"/>
|
||||
<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"/>
|
||||
<xs:complexType name="CreditorFinancialAccountType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IBANID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="ProprietaryID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DebtorFinancialAccountType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IBANID" type="udt:IDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DocumentContextParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ExchangedDocumentContextType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BusinessProcessSpecifiedDocumentContextParameter" type="ram:DocumentContextParameterType" minOccurs="0"/>
|
||||
<xs:element name="GuidelineSpecifiedDocumentContextParameter" type="ram:DocumentContextParameterType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ExchangedDocumentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType"/>
|
||||
<xs:element name="TypeCode" type="qdt:DocumentCodeType"/>
|
||||
<xs:element name="IssueDateTime" type="udt:DateTimeType"/>
|
||||
<xs:element name="IncludedNote" type="ram:NoteType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="HeaderTradeAgreementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BuyerReference" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="SellerTradeParty" type="ram:TradePartyType"/>
|
||||
<xs:element name="BuyerTradeParty" type="ram:TradePartyType"/>
|
||||
<xs:element name="SellerTaxRepresentativeTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="BuyerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
<xs:element name="ContractReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="HeaderTradeDeliveryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ShipToTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="ActualDeliverySupplyChainEvent" type="ram:SupplyChainEventType" minOccurs="0"/>
|
||||
<xs:element name="DespatchAdviceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="HeaderTradeSettlementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="CreditorReferenceID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="PaymentReference" type="udt:TextType" minOccurs="0"/>
|
||||
<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" maxOccurs="unbounded"/>
|
||||
<xs:element name="ApplicableTradeTax" type="ram:TradeTaxType" maxOccurs="unbounded"/>
|
||||
<xs:element name="BillingSpecifiedPeriod" type="ram:SpecifiedPeriodType" minOccurs="0"/>
|
||||
<xs:element name="SpecifiedTradeAllowanceCharge" type="ram:TradeAllowanceChargeType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<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="ReceivableSpecifiedTradeAccountingAccount" type="ram:TradeAccountingAccountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LegalOrganizationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="TradingBusinessName" type="udt:TextType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="NoteType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Content" type="udt:TextType"/>
|
||||
<xs:element name="SubjectCode" type="udt:CodeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ReferencedDocumentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IssuerAssignedID" type="udt:IDType"/>
|
||||
<xs:element name="FormattedIssueDateTime" type="qdt:FormattedDateTimeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SpecifiedPeriodType">
|
||||
<xs:sequence>
|
||||
<xs:element name="StartDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
<xs:element name="EndDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainEventType">
|
||||
<xs:sequence>
|
||||
<xs:element name="OccurrenceDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainTradeTransactionType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ApplicableHeaderTradeAgreement" type="ram:HeaderTradeAgreementType"/>
|
||||
<xs:element name="ApplicableHeaderTradeDelivery" type="ram:HeaderTradeDeliveryType"/>
|
||||
<xs:element name="ApplicableHeaderTradeSettlement" type="ram:HeaderTradeSettlementType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxRegistrationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeAccountingAccountType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeAddressType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PostcodeCode" type="udt:CodeType" minOccurs="0"/>
|
||||
<xs:element name="LineOne" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="LineTwo" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="LineThree" type="udt:TextType" minOccurs="0"/>
|
||||
<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"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeAllowanceChargeType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ChargeIndicator" type="udt:IndicatorType"/>
|
||||
<xs:element name="CalculationPercent" type="udt:PercentType" minOccurs="0"/>
|
||||
<xs:element name="BasisAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="ActualAmount" type="udt:AmountType"/>
|
||||
<xs:element name="ReasonCode" type="qdt:AllowanceChargeReasonCodeType" minOccurs="0"/>
|
||||
<xs:element name="Reason" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="CategoryTradeTax" type="ram:TradeTaxType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePartyType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="GlobalID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="Name" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="SpecifiedLegalOrganization" type="ram:LegalOrganizationType" minOccurs="0"/>
|
||||
<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:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePaymentTermsType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DueDateDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
<xs:element name="DirectDebitMandateID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeSettlementHeaderMonetarySummationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="LineTotalAmount" type="udt:AmountType"/>
|
||||
<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"/>
|
||||
<xs:element name="TaxTotalAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="GrandTotalAmount" type="udt:AmountType"/>
|
||||
<xs:element name="TotalPrepaidAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="DuePayableAmount" type="udt:AmountType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeSettlementPaymentMeansType">
|
||||
<xs:sequence>
|
||||
<xs:element name="TypeCode" type="qdt:PaymentMeansCodeType"/>
|
||||
<xs:element name="PayerPartyDebtorFinancialAccount" type="ram:DebtorFinancialAccountType" minOccurs="0"/>
|
||||
<xs:element name="PayeePartyCreditorFinancialAccount" type="ram:CreditorFinancialAccountType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeTaxType">
|
||||
<xs:sequence>
|
||||
<xs:element name="CalculatedAmount" type="udt:AmountType" 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"/>
|
||||
<xs:element name="CategoryCode" type="qdt:TaxCategoryCodeType"/>
|
||||
<xs:element name="ExemptionReasonCode" type="udt:CodeType" minOccurs="0"/>
|
||||
<xs:element name="DueDateTypeCode" type="qdt:TimeReferenceCodeType" minOccurs="0"/>
|
||||
<xs:element name="RateApplicablePercent" type="udt:PercentType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="UniversalCommunicationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="URIID" type="udt:IDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
elementFormDefault="qualified"
|
||||
version="100.D16B">
|
||||
<xs:complexType name="AmountType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal">
|
||||
<xs:attribute name="currencyID" type="xs:token" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:token"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DateTimeType">
|
||||
<xs:choice>
|
||||
<xs:element name="DateTimeString">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="format" type="xs:string" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="IDType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:token">
|
||||
<xs:attribute name="schemeID" type="xs:token" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="IndicatorType">
|
||||
<xs:choice>
|
||||
<xs:element name="Indicator" type="xs:boolean"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PercentType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TextType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
||||
xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
targetNamespace="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
|
||||
elementFormDefault="qualified">
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" schemaLocation="FACTUR-X_BASIC_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd"/>
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" schemaLocation="FACTUR-X_BASIC_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd"/>
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" schemaLocation="FACTUR-X_BASIC_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd"/>
|
||||
<xs:element name="CrossIndustryInvoice" type="rsm:CrossIndustryInvoiceType"/>
|
||||
<xs:complexType name="CrossIndustryInvoiceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ExchangedDocumentContext" type="ram:ExchangedDocumentContextType"/>
|
||||
<xs:element name="ExchangedDocument" type="ram:ExchangedDocumentType"/>
|
||||
<xs:element name="SupplyChainTradeTransaction" type="ram:SupplyChainTradeTransactionType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,788 @@
|
||||
<?xml version="1.0" encoding="UTF-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"/>
|
||||
<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:simpleType>
|
||||
<xs:complexType name="AllowanceChargeReasonCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:AllowanceChargeReasonCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</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="YE"/>
|
||||
<xs:enumeration value="YT"/>
|
||||
<xs:enumeration value="ZA"/>
|
||||
<xs:enumeration value="ZM"/>
|
||||
<xs:enumeration value="ZW"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="CountryIDType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:CountryIDContentType"/>
|
||||
</xs:simpleContent>
|
||||
</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:simpleType>
|
||||
<xs:complexType name="CurrencyCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:CurrencyCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</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="935"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="DocumentCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:DocumentCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="FormattedDateTimeFormatContentType">
|
||||
<xs:restriction base="xs:string"/>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="FormattedDateTimeType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DateTimeString">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="format" type="qdt:FormattedDateTimeFormatContentType" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</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:simpleType>
|
||||
<xs:complexType name="PaymentMeansCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:PaymentMeansCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</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:simpleType>
|
||||
<xs:complexType name="TaxCategoryCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:TaxCategoryCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="TaxTypeCodeContentType">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:enumeration value="VAT"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="TaxTypeCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:TaxTypeCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</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:simpleType>
|
||||
<xs:complexType name="TimeReferenceCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:TimeReferenceCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,242 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
targetNamespace="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
elementFormDefault="qualified">
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" schemaLocation="FACTUR-X_BASIC_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd"/>
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" schemaLocation="FACTUR-X_BASIC_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd"/>
|
||||
<xs:complexType name="CreditorFinancialAccountType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IBANID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="ProprietaryID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DebtorFinancialAccountType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IBANID" type="udt:IDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DocumentContextParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DocumentLineDocumentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="LineID" type="udt:IDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ExchangedDocumentContextType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BusinessProcessSpecifiedDocumentContextParameter" type="ram:DocumentContextParameterType" minOccurs="0"/>
|
||||
<xs:element name="GuidelineSpecifiedDocumentContextParameter" type="ram:DocumentContextParameterType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ExchangedDocumentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType"/>
|
||||
<xs:element name="TypeCode" type="qdt:DocumentCodeType"/>
|
||||
<xs:element name="IssueDateTime" type="udt:DateTimeType"/>
|
||||
<xs:element name="IncludedNote" type="ram:NoteType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="HeaderTradeAgreementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BuyerReference" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="SellerTradeParty" type="ram:TradePartyType"/>
|
||||
<xs:element name="BuyerTradeParty" type="ram:TradePartyType"/>
|
||||
<xs:element name="SellerTaxRepresentativeTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="BuyerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
<xs:element name="ContractReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="HeaderTradeDeliveryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ShipToTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="ActualDeliverySupplyChainEvent" type="ram:SupplyChainEventType" minOccurs="0"/>
|
||||
<xs:element name="DespatchAdviceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="HeaderTradeSettlementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="CreditorReferenceID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="PaymentReference" type="udt:TextType" minOccurs="0"/>
|
||||
<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" maxOccurs="unbounded"/>
|
||||
<xs:element name="ApplicableTradeTax" type="ram:TradeTaxType" maxOccurs="unbounded"/>
|
||||
<xs:element name="BillingSpecifiedPeriod" type="ram:SpecifiedPeriodType" minOccurs="0"/>
|
||||
<xs:element name="SpecifiedTradeAllowanceCharge" type="ram:TradeAllowanceChargeType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<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="ReceivableSpecifiedTradeAccountingAccount" type="ram:TradeAccountingAccountType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LegalOrganizationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="TradingBusinessName" type="udt:TextType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LineTradeAgreementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="NetPriceProductTradePrice" type="ram:TradePriceType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LineTradeDeliveryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BilledQuantity" type="udt:QuantityType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LineTradeSettlementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ApplicableTradeTax" type="ram:TradeTaxType"/>
|
||||
<xs:element name="SpecifiedTradeAllowanceCharge" type="ram:TradeAllowanceChargeType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="SpecifiedTradeSettlementLineMonetarySummation" type="ram:TradeSettlementLineMonetarySummationType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="NoteType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Content" type="udt:TextType"/>
|
||||
<xs:element name="SubjectCode" type="udt:CodeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ReferencedDocumentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IssuerAssignedID" type="udt:IDType"/>
|
||||
<xs:element name="FormattedIssueDateTime" type="qdt:FormattedDateTimeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SpecifiedPeriodType">
|
||||
<xs:sequence>
|
||||
<xs:element name="StartDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
<xs:element name="EndDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainEventType">
|
||||
<xs:sequence>
|
||||
<xs:element name="OccurrenceDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainTradeLineItemType">
|
||||
<xs:sequence>
|
||||
<xs:element name="AssociatedDocumentLineDocument" type="ram:DocumentLineDocumentType"/>
|
||||
<xs:element name="SpecifiedTradeProduct" type="ram:TradeProductType"/>
|
||||
<xs:element name="SpecifiedLineTradeAgreement" type="ram:LineTradeAgreementType"/>
|
||||
<xs:element name="SpecifiedLineTradeDelivery" type="ram:LineTradeDeliveryType" minOccurs="0"/>
|
||||
<xs:element name="SpecifiedLineTradeSettlement" type="ram:LineTradeSettlementType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainTradeTransactionType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IncludedSupplyChainTradeLineItem" type="ram:SupplyChainTradeLineItemType" maxOccurs="unbounded"/>
|
||||
<xs:element name="ApplicableHeaderTradeAgreement" type="ram:HeaderTradeAgreementType"/>
|
||||
<xs:element name="ApplicableHeaderTradeDelivery" type="ram:HeaderTradeDeliveryType"/>
|
||||
<xs:element name="ApplicableHeaderTradeSettlement" type="ram:HeaderTradeSettlementType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxRegistrationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeAccountingAccountType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeAddressType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PostcodeCode" type="udt:CodeType" minOccurs="0"/>
|
||||
<xs:element name="LineOne" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="LineTwo" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="LineThree" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="CityName" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="CountryID" type="qdt:CountryIDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeAllowanceChargeType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ChargeIndicator" type="udt:IndicatorType" minOccurs="0"/>
|
||||
<xs:element name="CalculationPercent" type="udt:PercentType" minOccurs="0"/>
|
||||
<xs:element name="BasisAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="ActualAmount" type="udt:AmountType"/>
|
||||
<xs:element name="ReasonCode" type="qdt:AllowanceChargeReasonCodeType" minOccurs="0"/>
|
||||
<xs:element name="Reason" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="CategoryTradeTax" type="ram:TradeTaxType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePartyType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="GlobalID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="Name" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="SpecifiedLegalOrganization" type="ram:LegalOrganizationType" minOccurs="0"/>
|
||||
<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:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePaymentTermsType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DueDateDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
<xs:element name="DirectDebitMandateID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePriceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ChargeAmount" type="udt:AmountType"/>
|
||||
<xs:element name="BasisQuantity" type="udt:QuantityType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeProductType">
|
||||
<xs:sequence>
|
||||
<xs:element name="GlobalID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="Name" type="udt:TextType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeSettlementHeaderMonetarySummationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="LineTotalAmount" type="udt:AmountType"/>
|
||||
<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"/>
|
||||
<xs:element name="TaxTotalAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="GrandTotalAmount" type="udt:AmountType"/>
|
||||
<xs:element name="TotalPrepaidAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="DuePayableAmount" type="udt:AmountType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeSettlementLineMonetarySummationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="LineTotalAmount" type="udt:AmountType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeSettlementPaymentMeansType">
|
||||
<xs:sequence>
|
||||
<xs:element name="TypeCode" type="qdt:PaymentMeansCodeType"/>
|
||||
<xs:element name="PayerPartyDebtorFinancialAccount" type="ram:DebtorFinancialAccountType" minOccurs="0"/>
|
||||
<xs:element name="PayeePartyCreditorFinancialAccount" type="ram:CreditorFinancialAccountType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeTaxType">
|
||||
<xs:sequence>
|
||||
<xs:element name="CalculatedAmount" type="udt:AmountType" 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"/>
|
||||
<xs:element name="CategoryCode" type="qdt:TaxCategoryCodeType"/>
|
||||
<xs:element name="ExemptionReasonCode" type="udt:CodeType" minOccurs="0"/>
|
||||
<xs:element name="DueDateTypeCode" type="qdt:TimeReferenceCodeType" minOccurs="0"/>
|
||||
<xs:element name="RateApplicablePercent" type="udt:PercentType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="UniversalCommunicationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="URIID" type="udt:IDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,61 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
elementFormDefault="qualified"
|
||||
version="100.D16B">
|
||||
<xs:complexType name="AmountType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal">
|
||||
<xs:attribute name="currencyID" type="xs:token" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:token"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DateTimeType">
|
||||
<xs:choice>
|
||||
<xs:element name="DateTimeString">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="format" type="xs:string" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="IDType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:token">
|
||||
<xs:attribute name="schemeID" type="xs:token" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="IndicatorType">
|
||||
<xs:choice>
|
||||
<xs:element name="Indicator" type="xs:boolean"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PercentType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="QuantityType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal">
|
||||
<xs:attribute name="unitCode" type="xs:token" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TextType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
||||
xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
targetNamespace="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
|
||||
elementFormDefault="qualified">
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" schemaLocation="FACTUR-X_EN16931_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd"/>
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" schemaLocation="FACTUR-X_EN16931_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd"/>
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" schemaLocation="FACTUR-X_EN16931_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd"/>
|
||||
<xs:element name="CrossIndustryInvoice" type="rsm:CrossIndustryInvoiceType"/>
|
||||
<xs:complexType name="CrossIndustryInvoiceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ExchangedDocumentContext" type="ram:ExchangedDocumentContextType"/>
|
||||
<xs:element name="ExchangedDocument" type="ram:ExchangedDocumentType"/>
|
||||
<xs:element name="SupplyChainTradeTransaction" type="ram:SupplyChainTradeTransactionType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,318 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
targetNamespace="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
elementFormDefault="qualified">
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" schemaLocation="FACTUR-X_EN16931_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd"/>
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" schemaLocation="FACTUR-X_EN16931_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd"/>
|
||||
<xs:complexType name="CreditorFinancialAccountType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IBANID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="AccountName" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="ProprietaryID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CreditorFinancialInstitutionType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BICID" type="udt:IDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DebtorFinancialAccountType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IBANID" type="udt:IDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DocumentContextParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DocumentLineDocumentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="LineID" type="udt:IDType"/>
|
||||
<xs:element name="IncludedNote" type="ram:NoteType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ExchangedDocumentContextType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BusinessProcessSpecifiedDocumentContextParameter" type="ram:DocumentContextParameterType" minOccurs="0"/>
|
||||
<xs:element name="GuidelineSpecifiedDocumentContextParameter" type="ram:DocumentContextParameterType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ExchangedDocumentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType"/>
|
||||
<xs:element name="TypeCode" type="qdt:DocumentCodeType"/>
|
||||
<xs:element name="IssueDateTime" type="udt:DateTimeType"/>
|
||||
<xs:element name="IncludedNote" type="ram:NoteType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="HeaderTradeAgreementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BuyerReference" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="SellerTradeParty" type="ram:TradePartyType"/>
|
||||
<xs:element name="BuyerTradeParty" type="ram:TradePartyType"/>
|
||||
<xs:element name="SellerTaxRepresentativeTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="SellerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
<xs:element name="BuyerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
<xs:element name="ContractReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
<xs:element name="AdditionalReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="SpecifiedProcuringProject" type="ram:ProcuringProjectType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="HeaderTradeDeliveryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ShipToTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="ActualDeliverySupplyChainEvent" type="ram:SupplyChainEventType" minOccurs="0"/>
|
||||
<xs:element name="DespatchAdviceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
<xs:element name="ReceivingAdviceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="HeaderTradeSettlementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="CreditorReferenceID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="PaymentReference" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="TaxCurrencyCode" type="qdt:CurrencyCodeType" minOccurs="0"/>
|
||||
<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" maxOccurs="unbounded"/>
|
||||
<xs:element name="ApplicableTradeTax" type="ram:TradeTaxType" maxOccurs="unbounded"/>
|
||||
<xs:element name="BillingSpecifiedPeriod" type="ram:SpecifiedPeriodType" minOccurs="0"/>
|
||||
<xs:element name="SpecifiedTradeAllowanceCharge" type="ram:TradeAllowanceChargeType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<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="ReceivableSpecifiedTradeAccountingAccount" type="ram:TradeAccountingAccountType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LegalOrganizationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="TradingBusinessName" type="udt:TextType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LineTradeAgreementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BuyerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
<xs:element name="GrossPriceProductTradePrice" type="ram:TradePriceType" minOccurs="0"/>
|
||||
<xs:element name="NetPriceProductTradePrice" type="ram:TradePriceType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LineTradeDeliveryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BilledQuantity" type="udt:QuantityType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LineTradeSettlementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ApplicableTradeTax" type="ram:TradeTaxType"/>
|
||||
<xs:element name="BillingSpecifiedPeriod" type="ram:SpecifiedPeriodType" minOccurs="0"/>
|
||||
<xs:element name="SpecifiedTradeAllowanceCharge" type="ram:TradeAllowanceChargeType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="SpecifiedTradeSettlementLineMonetarySummation" type="ram:TradeSettlementLineMonetarySummationType"/>
|
||||
<xs:element name="AdditionalReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
<xs:element name="ReceivableSpecifiedTradeAccountingAccount" type="ram:TradeAccountingAccountType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="NoteType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Content" type="udt:TextType"/>
|
||||
<xs:element name="SubjectCode" type="udt:CodeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ProcuringProjectType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType"/>
|
||||
<xs:element name="Name" type="udt:TextType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ProductCharacteristicType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Description" type="udt:TextType"/>
|
||||
<xs:element name="Value" type="udt:TextType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ProductClassificationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ClassCode" type="udt:CodeType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ReferencedDocumentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IssuerAssignedID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="URIID" type="udt:IDType" minOccurs="0"/>
|
||||
<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"/>
|
||||
<xs:element name="AttachmentBinaryObject" type="udt:BinaryObjectType" minOccurs="0"/>
|
||||
<xs:element name="ReferenceTypeCode" type="qdt:ReferenceCodeType" minOccurs="0"/>
|
||||
<xs:element name="FormattedIssueDateTime" type="qdt:FormattedDateTimeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SpecifiedPeriodType">
|
||||
<xs:sequence>
|
||||
<xs:element name="StartDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
<xs:element name="EndDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainEventType">
|
||||
<xs:sequence>
|
||||
<xs:element name="OccurrenceDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainTradeLineItemType">
|
||||
<xs:sequence>
|
||||
<xs:element name="AssociatedDocumentLineDocument" type="ram:DocumentLineDocumentType"/>
|
||||
<xs:element name="SpecifiedTradeProduct" type="ram:TradeProductType"/>
|
||||
<xs:element name="SpecifiedLineTradeAgreement" type="ram:LineTradeAgreementType"/>
|
||||
<xs:element name="SpecifiedLineTradeDelivery" type="ram:LineTradeDeliveryType" minOccurs="0"/>
|
||||
<xs:element name="SpecifiedLineTradeSettlement" type="ram:LineTradeSettlementType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainTradeTransactionType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IncludedSupplyChainTradeLineItem" type="ram:SupplyChainTradeLineItemType" maxOccurs="unbounded"/>
|
||||
<xs:element name="ApplicableHeaderTradeAgreement" type="ram:HeaderTradeAgreementType"/>
|
||||
<xs:element name="ApplicableHeaderTradeDelivery" type="ram:HeaderTradeDeliveryType"/>
|
||||
<xs:element name="ApplicableHeaderTradeSettlement" type="ram:HeaderTradeSettlementType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxRegistrationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeAccountingAccountType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeAddressType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PostcodeCode" type="udt:CodeType" minOccurs="0"/>
|
||||
<xs:element name="LineOne" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="LineTwo" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="LineThree" type="udt:TextType" minOccurs="0"/>
|
||||
<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"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeAllowanceChargeType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ChargeIndicator" type="udt:IndicatorType" minOccurs="0"/>
|
||||
<xs:element name="CalculationPercent" type="udt:PercentType" minOccurs="0"/>
|
||||
<xs:element name="BasisAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="ActualAmount" type="udt:AmountType"/>
|
||||
<xs:element name="ReasonCode" type="qdt:AllowanceChargeReasonCodeType" minOccurs="0"/>
|
||||
<xs:element name="Reason" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="CategoryTradeTax" type="ram:TradeTaxType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeContactType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PersonName" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="DepartmentName" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="TelephoneUniversalCommunication" type="ram:UniversalCommunicationType" minOccurs="0"/>
|
||||
<xs:element name="EmailURIUniversalCommunication" type="ram:UniversalCommunicationType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeCountryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="qdt:CountryIDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePartyType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="GlobalID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="Name" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="Description" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="SpecifiedLegalOrganization" type="ram:LegalOrganizationType" minOccurs="0"/>
|
||||
<xs:element name="DefinedTradeContact" type="ram:TradeContactType" minOccurs="0"/>
|
||||
<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:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePaymentTermsType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Description" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="DueDateDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
<xs:element name="DirectDebitMandateID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePriceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ChargeAmount" type="udt:AmountType"/>
|
||||
<xs:element name="BasisQuantity" type="udt:QuantityType" minOccurs="0"/>
|
||||
<xs:element name="AppliedTradeAllowanceCharge" type="ram:TradeAllowanceChargeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeProductType">
|
||||
<xs:sequence>
|
||||
<xs:element name="GlobalID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="SellerAssignedID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="BuyerAssignedID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="Name" type="udt:TextType"/>
|
||||
<xs:element name="Description" 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"/>
|
||||
<xs:element name="OriginTradeCountry" type="ram:TradeCountryType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeSettlementFinancialCardType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType"/>
|
||||
<xs:element name="CardholderName" type="udt:TextType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeSettlementHeaderMonetarySummationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="LineTotalAmount" type="udt:AmountType"/>
|
||||
<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"/>
|
||||
<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"/>
|
||||
<xs:element name="TotalPrepaidAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="DuePayableAmount" type="udt:AmountType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeSettlementLineMonetarySummationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="LineTotalAmount" type="udt:AmountType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeSettlementPaymentMeansType">
|
||||
<xs:sequence>
|
||||
<xs:element name="TypeCode" type="qdt:PaymentMeansCodeType"/>
|
||||
<xs:element name="Information" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="ApplicableTradeSettlementFinancialCard" type="ram:TradeSettlementFinancialCardType" minOccurs="0"/>
|
||||
<xs:element name="PayerPartyDebtorFinancialAccount" type="ram:DebtorFinancialAccountType" minOccurs="0"/>
|
||||
<xs:element name="PayeePartyCreditorFinancialAccount" type="ram:CreditorFinancialAccountType" minOccurs="0"/>
|
||||
<xs:element name="PayeeSpecifiedCreditorFinancialInstitution" type="ram:CreditorFinancialInstitutionType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeTaxType">
|
||||
<xs:sequence>
|
||||
<xs:element name="CalculatedAmount" type="udt:AmountType" 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"/>
|
||||
<xs:element name="CategoryCode" type="qdt:TaxCategoryCodeType"/>
|
||||
<xs:element name="ExemptionReasonCode" type="udt:CodeType" minOccurs="0"/>
|
||||
<xs:element name="TaxPointDate" type="udt:DateType" minOccurs="0"/>
|
||||
<xs:element name="DueDateTypeCode" type="qdt:TimeReferenceCodeType" minOccurs="0"/>
|
||||
<xs:element name="RateApplicablePercent" type="udt:PercentType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="UniversalCommunicationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="URIID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="CompleteNumber" type="udt:TextType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,85 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
elementFormDefault="qualified"
|
||||
version="100.D16B">
|
||||
<xs:complexType name="AmountType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal">
|
||||
<xs:attribute name="currencyID" type="xs:token" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="BinaryObjectType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:base64Binary">
|
||||
<xs:attribute name="mimeCode" type="xs:token" use="required"/>
|
||||
<xs:attribute name="filename" type="xs:string" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:token">
|
||||
<xs:attribute name="listID" type="xs:token" use="optional"/>
|
||||
<xs:attribute name="listVersionID" type="xs:token" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DateTimeType">
|
||||
<xs:choice>
|
||||
<xs:element name="DateTimeString">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="format" type="xs:string" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DateType">
|
||||
<xs:choice>
|
||||
<xs:element name="DateString">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="format" type="xs:string" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="IDType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:token">
|
||||
<xs:attribute name="schemeID" type="xs:token" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="IndicatorType">
|
||||
<xs:choice>
|
||||
<xs:element name="Indicator" type="xs:boolean"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PercentType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="QuantityType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal">
|
||||
<xs:attribute name="unitCode" type="xs:token" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TextType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
||||
xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
targetNamespace="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
|
||||
elementFormDefault="qualified">
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" schemaLocation="FACTUR-X_EXTENDED_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd"/>
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" schemaLocation="FACTUR-X_EXTENDED_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd"/>
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" schemaLocation="FACTUR-X_EXTENDED_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd"/>
|
||||
<xs:element name="CrossIndustryInvoice" type="rsm:CrossIndustryInvoiceType"/>
|
||||
<xs:complexType name="CrossIndustryInvoiceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ExchangedDocumentContext" type="ram:ExchangedDocumentContextType"/>
|
||||
<xs:element name="ExchangedDocument" type="ram:ExchangedDocumentType"/>
|
||||
<xs:element name="SupplyChainTradeTransaction" type="ram:SupplyChainTradeTransactionType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,433 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
targetNamespace="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
elementFormDefault="qualified">
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" schemaLocation="FACTUR-X_EXTENDED_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd"/>
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" schemaLocation="FACTUR-X_EXTENDED_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd"/>
|
||||
<xs:complexType name="AdvancePaymentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PaidAmount" type="udt:AmountType"/>
|
||||
<xs:element name="FormattedReceivedDateTime" type="qdt:FormattedDateTimeType" minOccurs="0"/>
|
||||
<xs:element name="IncludedTradeTax" type="ram:TradeTaxType" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CreditorFinancialAccountType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IBANID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="AccountName" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="ProprietaryID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CreditorFinancialInstitutionType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BICID" type="udt:IDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DebtorFinancialAccountType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IBANID" type="udt:IDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DocumentContextParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DocumentLineDocumentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="LineID" type="udt:IDType"/>
|
||||
<xs:element name="LineStatusCode" type="qdt:LineStatusCodeType" minOccurs="0"/>
|
||||
<xs:element name="LineStatusReasonCode" type="udt:CodeType" minOccurs="0"/>
|
||||
<xs:element name="IncludedNote" type="ram:NoteType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ExchangedDocumentContextType">
|
||||
<xs:sequence>
|
||||
<xs:element name="TestIndicator" type="udt:IndicatorType" minOccurs="0"/>
|
||||
<xs:element name="BusinessProcessSpecifiedDocumentContextParameter" type="ram:DocumentContextParameterType" minOccurs="0"/>
|
||||
<xs:element name="GuidelineSpecifiedDocumentContextParameter" type="ram:DocumentContextParameterType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ExchangedDocumentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType"/>
|
||||
<xs:element name="Name" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="TypeCode" type="qdt:DocumentCodeType"/>
|
||||
<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="IncludedNote" type="ram:NoteType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="EffectiveSpecifiedPeriod" type="ram:SpecifiedPeriodType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="HeaderTradeAgreementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BuyerReference" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="SellerTradeParty" type="ram:TradePartyType"/>
|
||||
<xs:element name="BuyerTradeParty" type="ram:TradePartyType"/>
|
||||
<xs:element name="SellerTaxRepresentativeTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="ProductEndUserTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="ApplicableTradeDeliveryTerms" type="ram:TradeDeliveryTermsType" minOccurs="0"/>
|
||||
<xs:element name="SellerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
<xs:element name="BuyerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
<xs:element name="ContractReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
<xs:element name="AdditionalReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="SpecifiedProcuringProject" type="ram:ProcuringProjectType" minOccurs="0"/>
|
||||
<xs:element name="UltimateCustomerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="HeaderTradeDeliveryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="RelatedSupplyChainConsignment" type="ram:SupplyChainConsignmentType" minOccurs="0"/>
|
||||
<xs:element name="ShipToTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="UltimateShipToTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="ShipFromTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="ActualDeliverySupplyChainEvent" type="ram:SupplyChainEventType" minOccurs="0"/>
|
||||
<xs:element name="DespatchAdviceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
<xs:element name="ReceivingAdviceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
<xs:element name="DeliveryNoteReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="HeaderTradeSettlementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="CreditorReferenceID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="PaymentReference" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="TaxCurrencyCode" type="qdt:CurrencyCodeType" minOccurs="0"/>
|
||||
<xs:element name="InvoiceCurrencyCode" type="qdt:CurrencyCodeType"/>
|
||||
<xs:element name="InvoiceIssuerReference" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="InvoicerTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="InvoiceeTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="PayeeTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="TaxApplicableTradeCurrencyExchange" type="ram:TradeCurrencyExchangeType" 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"/>
|
||||
<xs:element name="SpecifiedTradeAllowanceCharge" type="ram:TradeAllowanceChargeType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="SpecifiedLogisticsServiceCharge" type="ram:LogisticsServiceChargeType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<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="ReceivableSpecifiedTradeAccountingAccount" type="ram:TradeAccountingAccountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="SpecifiedAdvancePayment" type="ram:AdvancePaymentType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LegalOrganizationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="TradingBusinessName" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="PostalTradeAddress" type="ram:TradeAddressType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LineTradeAgreementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BuyerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
<xs:element name="ContractReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
<xs:element name="AdditionalReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="GrossPriceProductTradePrice" type="ram:TradePriceType" minOccurs="0"/>
|
||||
<xs:element name="NetPriceProductTradePrice" type="ram:TradePriceType"/>
|
||||
<xs:element name="UltimateCustomerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LineTradeDeliveryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BilledQuantity" type="udt:QuantityType"/>
|
||||
<xs:element name="ChargeFreeQuantity" type="udt:QuantityType" minOccurs="0"/>
|
||||
<xs:element name="PackageQuantity" type="udt:QuantityType" minOccurs="0"/>
|
||||
<xs:element name="ShipToTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="UltimateShipToTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
||||
<xs:element name="ActualDeliverySupplyChainEvent" type="ram:SupplyChainEventType" minOccurs="0"/>
|
||||
<xs:element name="DespatchAdviceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
<xs:element name="ReceivingAdviceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
<xs:element name="DeliveryNoteReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LineTradeSettlementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ApplicableTradeTax" type="ram:TradeTaxType" maxOccurs="unbounded"/>
|
||||
<xs:element name="BillingSpecifiedPeriod" type="ram:SpecifiedPeriodType" minOccurs="0"/>
|
||||
<xs:element name="SpecifiedTradeAllowanceCharge" type="ram:TradeAllowanceChargeType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="SpecifiedTradeSettlementLineMonetarySummation" type="ram:TradeSettlementLineMonetarySummationType"/>
|
||||
<xs:element name="AdditionalReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="ReceivableSpecifiedTradeAccountingAccount" type="ram:TradeAccountingAccountType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LogisticsServiceChargeType">
|
||||
<xs:sequence>
|
||||
<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:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LogisticsTransportMovementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ModeCode" type="qdt:TransportModeCodeType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="NoteType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ContentCode" type="udt:CodeType" minOccurs="0"/>
|
||||
<xs:element name="Content" type="udt:TextType"/>
|
||||
<xs:element name="SubjectCode" type="udt:CodeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ProcuringProjectType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType"/>
|
||||
<xs:element name="Name" type="udt:TextType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ProductCharacteristicType">
|
||||
<xs:sequence>
|
||||
<xs:element name="TypeCode" type="udt:CodeType" minOccurs="0"/>
|
||||
<xs:element name="Description" type="udt:TextType"/>
|
||||
<xs:element name="ValueMeasure" type="udt:MeasureType" minOccurs="0"/>
|
||||
<xs:element name="Value" type="udt:TextType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ProductClassificationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ClassCode" type="udt:CodeType"/>
|
||||
<xs:element name="ClassName" type="udt:TextType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ReferencedDocumentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IssuerAssignedID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="URIID" type="udt:IDType" minOccurs="0"/>
|
||||
<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="AttachmentBinaryObject" type="udt:BinaryObjectType" minOccurs="0"/>
|
||||
<xs:element name="ReferenceTypeCode" type="qdt:ReferenceCodeType" minOccurs="0"/>
|
||||
<xs:element name="FormattedIssueDateTime" type="qdt:FormattedDateTimeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ReferencedProductType">
|
||||
<xs:sequence>
|
||||
<xs:element name="GlobalID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="SellerAssignedID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="BuyerAssignedID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="Name" type="udt:TextType"/>
|
||||
<xs:element name="Description" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="UnitQuantity" type="udt:QuantityType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SpecifiedPeriodType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Description" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="StartDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
<xs:element name="EndDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
<xs:element name="CompleteDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainConsignmentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SpecifiedLogisticsTransportMovement" type="ram:LogisticsTransportMovementType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainEventType">
|
||||
<xs:sequence>
|
||||
<xs:element name="OccurrenceDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainTradeLineItemType">
|
||||
<xs:sequence>
|
||||
<xs:element name="AssociatedDocumentLineDocument" type="ram:DocumentLineDocumentType"/>
|
||||
<xs:element name="SpecifiedTradeProduct" type="ram:TradeProductType"/>
|
||||
<xs:element name="SpecifiedLineTradeAgreement" type="ram:LineTradeAgreementType"/>
|
||||
<xs:element name="SpecifiedLineTradeDelivery" type="ram:LineTradeDeliveryType" minOccurs="0"/>
|
||||
<xs:element name="SpecifiedLineTradeSettlement" type="ram:LineTradeSettlementType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainTradeTransactionType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IncludedSupplyChainTradeLineItem" type="ram:SupplyChainTradeLineItemType" maxOccurs="unbounded"/>
|
||||
<xs:element name="ApplicableHeaderTradeAgreement" type="ram:HeaderTradeAgreementType"/>
|
||||
<xs:element name="ApplicableHeaderTradeDelivery" type="ram:HeaderTradeDeliveryType"/>
|
||||
<xs:element name="ApplicableHeaderTradeSettlement" type="ram:HeaderTradeSettlementType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxRegistrationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeAccountingAccountType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType"/>
|
||||
<xs:element name="TypeCode" type="qdt:AccountingAccountTypeCodeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeAddressType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PostcodeCode" type="udt:CodeType" minOccurs="0"/>
|
||||
<xs:element name="LineOne" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="LineTwo" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="LineThree" type="udt:TextType" minOccurs="0"/>
|
||||
<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:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeAllowanceChargeType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ChargeIndicator" type="udt:IndicatorType" minOccurs="0"/>
|
||||
<xs:element name="SequenceNumeric" type="udt:NumericType" minOccurs="0"/>
|
||||
<xs:element name="CalculationPercent" type="udt:PercentType" minOccurs="0"/>
|
||||
<xs:element name="BasisAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="BasisQuantity" type="udt:QuantityType" minOccurs="0"/>
|
||||
<xs:element name="ActualAmount" type="udt:AmountType"/>
|
||||
<xs:element name="ReasonCode" type="qdt:AllowanceChargeReasonCodeType" minOccurs="0"/>
|
||||
<xs:element name="Reason" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="CategoryTradeTax" type="ram:TradeTaxType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeContactType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PersonName" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="DepartmentName" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="TelephoneUniversalCommunication" type="ram:UniversalCommunicationType" minOccurs="0"/>
|
||||
<xs:element name="FaxUniversalCommunication" type="ram:UniversalCommunicationType" minOccurs="0"/>
|
||||
<xs:element name="EmailURIUniversalCommunication" type="ram:UniversalCommunicationType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeCountryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="qdt:CountryIDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeCurrencyExchangeType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SourceCurrencyCode" type="qdt:CurrencyCodeType"/>
|
||||
<xs:element name="TargetCurrencyCode" type="qdt:CurrencyCodeType"/>
|
||||
<xs:element name="ConversionRate" type="udt:RateType"/>
|
||||
<xs:element name="ConversionRateDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeDeliveryTermsType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DeliveryTypeCode" type="qdt:DeliveryTermsCodeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePartyType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="GlobalID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="Name" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="Description" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="SpecifiedLegalOrganization" type="ram:LegalOrganizationType" minOccurs="0"/>
|
||||
<xs:element name="DefinedTradeContact" type="ram:TradeContactType" minOccurs="0"/>
|
||||
<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:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePaymentDiscountTermsType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BasisDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
<xs:element name="BasisPeriodMeasure" type="udt:MeasureType" minOccurs="0"/>
|
||||
<xs:element name="BasisAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="CalculationPercent" type="udt:PercentType" minOccurs="0"/>
|
||||
<xs:element name="ActualDiscountAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePaymentPenaltyTermsType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BasisDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
<xs:element name="BasisPeriodMeasure" type="udt:MeasureType" minOccurs="0"/>
|
||||
<xs:element name="BasisAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="CalculationPercent" type="udt:PercentType" minOccurs="0"/>
|
||||
<xs:element name="ActualPenaltyAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePaymentTermsType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Description" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="DueDateDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
||||
<xs:element name="DirectDebitMandateID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="PartialPaymentAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="ApplicableTradePaymentPenaltyTerms" type="ram:TradePaymentPenaltyTermsType" minOccurs="0"/>
|
||||
<xs:element name="ApplicableTradePaymentDiscountTerms" type="ram:TradePaymentDiscountTermsType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePriceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ChargeAmount" type="udt:AmountType"/>
|
||||
<xs:element name="BasisQuantity" type="udt:QuantityType" minOccurs="0"/>
|
||||
<xs:element name="AppliedTradeAllowanceCharge" type="ram:TradeAllowanceChargeType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="IncludedTradeTax" type="ram:TradeTaxType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeProductType">
|
||||
<xs:sequence>
|
||||
<xs:element name="GlobalID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="SellerAssignedID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="BuyerAssignedID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="Name" type="udt:TextType"/>
|
||||
<xs:element name="Description" 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"/>
|
||||
<xs:element name="OriginTradeCountry" type="ram:TradeCountryType" minOccurs="0"/>
|
||||
<xs:element name="IncludedReferencedProduct" type="ram:ReferencedProductType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeSettlementFinancialCardType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType"/>
|
||||
<xs:element name="CardholderName" type="udt:TextType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeSettlementHeaderMonetarySummationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="LineTotalAmount" type="udt:AmountType"/>
|
||||
<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="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="TotalPrepaidAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="DuePayableAmount" type="udt:AmountType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeSettlementLineMonetarySummationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="LineTotalAmount" type="udt:AmountType"/>
|
||||
<xs:element name="TotalAllowanceChargeAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeSettlementPaymentMeansType">
|
||||
<xs:sequence>
|
||||
<xs:element name="TypeCode" type="qdt:PaymentMeansCodeType"/>
|
||||
<xs:element name="Information" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="ApplicableTradeSettlementFinancialCard" type="ram:TradeSettlementFinancialCardType" minOccurs="0"/>
|
||||
<xs:element name="PayerPartyDebtorFinancialAccount" type="ram:DebtorFinancialAccountType" minOccurs="0"/>
|
||||
<xs:element name="PayeePartyCreditorFinancialAccount" type="ram:CreditorFinancialAccountType" minOccurs="0"/>
|
||||
<xs:element name="PayeeSpecifiedCreditorFinancialInstitution" type="ram:CreditorFinancialInstitutionType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeTaxType">
|
||||
<xs:sequence>
|
||||
<xs:element name="CalculatedAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="TypeCode" type="qdt:TaxTypeCodeType" minOccurs="0"/>
|
||||
<xs:element name="ExemptionReason" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="BasisAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="LineTotalBasisAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="AllowanceChargeBasisAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="CategoryCode" type="qdt:TaxCategoryCodeType" minOccurs="0"/>
|
||||
<xs:element name="ExemptionReasonCode" type="udt:CodeType" minOccurs="0"/>
|
||||
<xs:element name="TaxPointDate" type="udt:DateType" minOccurs="0"/>
|
||||
<xs:element name="DueDateTypeCode" type="qdt:TimeReferenceCodeType" minOccurs="0"/>
|
||||
<xs:element name="RateApplicablePercent" type="udt:PercentType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="UniversalCommunicationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="URIID" type="udt:IDType" minOccurs="0"/>
|
||||
<xs:element name="CompleteNumber" type="udt:TextType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,103 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
elementFormDefault="qualified"
|
||||
version="100.D16B">
|
||||
<xs:complexType name="AmountType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal">
|
||||
<xs:attribute name="currencyID" type="xs:token" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="BinaryObjectType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:base64Binary">
|
||||
<xs:attribute name="mimeCode" type="xs:token" use="required"/>
|
||||
<xs:attribute name="filename" type="xs:string" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:token">
|
||||
<xs:attribute name="listID" type="xs:token" use="optional"/>
|
||||
<xs:attribute name="listVersionID" type="xs:token" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DateTimeType">
|
||||
<xs:choice>
|
||||
<xs:element name="DateTimeString">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="format" type="xs:string" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="DateTime" type="xs:dateTime"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DateType">
|
||||
<xs:choice>
|
||||
<xs:element name="DateString">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="format" type="xs:string" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="IDType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:token">
|
||||
<xs:attribute name="schemeID" type="xs:token" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="IndicatorType">
|
||||
<xs:choice>
|
||||
<xs:element name="Indicator" type="xs:boolean"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="MeasureType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal">
|
||||
<xs:attribute name="unitCode" type="xs:token" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="NumericType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PercentType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="QuantityType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal">
|
||||
<xs:attribute name="unitCode" type="xs:token" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="RateType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TextType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
||||
xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
targetNamespace="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
|
||||
elementFormDefault="qualified">
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" schemaLocation="FACTUR-X_MINIMUM_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd"/>
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" schemaLocation="FACTUR-X_MINIMUM_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd"/>
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" schemaLocation="FACTUR-X_MINIMUM_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd"/>
|
||||
<xs:element name="CrossIndustryInvoice" type="rsm:CrossIndustryInvoiceType"/>
|
||||
<xs:complexType name="CrossIndustryInvoiceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ExchangedDocumentContext" type="ram:ExchangedDocumentContextType"/>
|
||||
<xs:element name="ExchangedDocument" type="ram:ExchangedDocumentType"/>
|
||||
<xs:element name="SupplyChainTradeTransaction" type="ram:SupplyChainTradeTransactionType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,507 @@
|
||||
<?xml version="1.0" encoding="UTF-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"/>
|
||||
<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="YE"/>
|
||||
<xs:enumeration value="YT"/>
|
||||
<xs:enumeration value="ZA"/>
|
||||
<xs:enumeration value="ZM"/>
|
||||
<xs:enumeration value="ZW"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="CountryIDType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:CountryIDContentType"/>
|
||||
</xs:simpleContent>
|
||||
</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:simpleType>
|
||||
<xs:complexType name="CurrencyCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:CurrencyCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</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="935"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="DocumentCodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="qdt:DocumentCodeContentType"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,92 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
targetNamespace="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
elementFormDefault="qualified">
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" schemaLocation="FACTUR-X_MINIMUM_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd"/>
|
||||
<xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" schemaLocation="FACTUR-X_MINIMUM_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd"/>
|
||||
<xs:complexType name="DocumentContextParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ExchangedDocumentContextType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BusinessProcessSpecifiedDocumentContextParameter" type="ram:DocumentContextParameterType" minOccurs="0"/>
|
||||
<xs:element name="GuidelineSpecifiedDocumentContextParameter" type="ram:DocumentContextParameterType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ExchangedDocumentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType"/>
|
||||
<xs:element name="TypeCode" type="qdt:DocumentCodeType"/>
|
||||
<xs:element name="IssueDateTime" type="udt:DateTimeType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="HeaderTradeAgreementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="BuyerReference" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="SellerTradeParty" type="ram:TradePartyType"/>
|
||||
<xs:element name="BuyerTradeParty" type="ram:TradePartyType"/>
|
||||
<xs:element name="BuyerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="HeaderTradeDeliveryType"/>
|
||||
<xs:complexType name="HeaderTradeSettlementType">
|
||||
<xs:sequence>
|
||||
<xs:element name="InvoiceCurrencyCode" type="qdt:CurrencyCodeType"/>
|
||||
<xs:element name="SpecifiedTradeSettlementHeaderMonetarySummation" type="ram:TradeSettlementHeaderMonetarySummationType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="LegalOrganizationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ReferencedDocumentType">
|
||||
<xs:sequence>
|
||||
<xs:element name="IssuerAssignedID" type="udt:IDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupplyChainTradeTransactionType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ApplicableHeaderTradeAgreement" type="ram:HeaderTradeAgreementType"/>
|
||||
<xs:element name="ApplicableHeaderTradeDelivery" type="ram:HeaderTradeDeliveryType"/>
|
||||
<xs:element name="ApplicableHeaderTradeSettlement" type="ram:HeaderTradeSettlementType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TaxRegistrationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="udt:IDType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeAddressType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PostcodeCode" type="udt:CodeType" minOccurs="0"/>
|
||||
<xs:element name="LineOne" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="LineTwo" type="udt:TextType" minOccurs="0"/>
|
||||
<xs:element name="LineThree" type="udt:TextType" minOccurs="0"/>
|
||||
<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"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradePartyType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Name" type="udt:TextType"/>
|
||||
<xs:element name="SpecifiedLegalOrganization" type="ram:LegalOrganizationType" minOccurs="0"/>
|
||||
<xs:element name="PostalTradeAddress" type="ram:TradeAddressType" minOccurs="0"/>
|
||||
<xs:element name="SpecifiedTaxRegistration" type="ram:TaxRegistrationType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TradeSettlementHeaderMonetarySummationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="TaxBasisTotalAmount" type="udt:AmountType"/>
|
||||
<xs:element name="TaxTotalAmount" type="udt:AmountType" minOccurs="0"/>
|
||||
<xs:element name="GrandTotalAmount" type="udt:AmountType"/>
|
||||
<xs:element name="DuePayableAmount" type="udt:AmountType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
elementFormDefault="qualified"
|
||||
version="100.D16B">
|
||||
<xs:complexType name="AmountType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal">
|
||||
<xs:attribute name="currencyID" type="xs:token" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CodeType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:token"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DateTimeType">
|
||||
<xs:choice>
|
||||
<xs:element name="DateTimeString">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="format" type="xs:string" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="IDType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:token">
|
||||
<xs:attribute name="schemeID" type="xs:token" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TextType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string"/>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
12143
libraryExtended/src/main/resources/xslt/EN16931-CII-validation.xslt
Normal file
12143
libraryExtended/src/main/resources/xslt/EN16931-CII-validation.xslt
Normal file
File diff suppressed because one or more lines are too long
2276
libraryExtended/src/main/resources/xslt/FACTUR-X_BASIC-WL_codedb.xml
Normal file
2276
libraryExtended/src/main/resources/xslt/FACTUR-X_BASIC-WL_codedb.xml
Normal file
File diff suppressed because it is too large
Load Diff
4673
libraryExtended/src/main/resources/xslt/FACTUR-X_BASIC_codedb.xml
Normal file
4673
libraryExtended/src/main/resources/xslt/FACTUR-X_BASIC_codedb.xml
Normal file
File diff suppressed because it is too large
Load Diff
5030
libraryExtended/src/main/resources/xslt/FACTUR-X_EN16931_codedb.xml
Normal file
5030
libraryExtended/src/main/resources/xslt/FACTUR-X_EN16931_codedb.xml
Normal file
File diff suppressed because it is too large
Load Diff
7604
libraryExtended/src/main/resources/xslt/FACTUR-X_EXTENDED_codedb.xml
Normal file
7604
libraryExtended/src/main/resources/xslt/FACTUR-X_EXTENDED_codedb.xml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,637 @@
|
||||
<?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="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="4">
|
||||
<enumeration value="FC"/>
|
||||
<enumeration value="VA"/>
|
||||
</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="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>
|
||||
</codedb>
|
||||
130395
libraryExtended/src/main/resources/xslt/ZUGFeRD_1p0.xslt
Normal file
130395
libraryExtended/src/main/resources/xslt/ZUGFeRD_1p0.xslt
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
39231
libraryExtended/src/main/resources/xslt/zugferd21_basic.xsl
Normal file
39231
libraryExtended/src/main/resources/xslt/zugferd21_basic.xsl
Normal file
File diff suppressed because it is too large
Load Diff
32039
libraryExtended/src/main/resources/xslt/zugferd21_basicwl.xsl
Normal file
32039
libraryExtended/src/main/resources/xslt/zugferd21_basicwl.xsl
Normal file
File diff suppressed because it is too large
Load Diff
52135
libraryExtended/src/main/resources/xslt/zugferd21_en16931.xsl
Normal file
52135
libraryExtended/src/main/resources/xslt/zugferd21_en16931.xsl
Normal file
File diff suppressed because it is too large
Load Diff
110193
libraryExtended/src/main/resources/xslt/zugferd21_extended.xsl
Normal file
110193
libraryExtended/src/main/resources/xslt/zugferd21_extended.xsl
Normal file
File diff suppressed because it is too large
Load Diff
14866
libraryExtended/src/main/resources/xslt/zugferd21_minimum.xsl
Normal file
14866
libraryExtended/src/main/resources/xslt/zugferd21_minimum.xsl
Normal file
File diff suppressed because it is too large
Load Diff
31275
libraryExtended/src/main/resources/xslt/zugferd2p0_basicwl_minimum.xslt
Normal file
31275
libraryExtended/src/main/resources/xslt/zugferd2p0_basicwl_minimum.xslt
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
49254
libraryExtended/src/main/resources/xslt/zugferd2p0_en16931.xslt
Normal file
49254
libraryExtended/src/main/resources/xslt/zugferd2p0_en16931.xslt
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
104668
libraryExtended/src/main/resources/xslt/zugferd2p0_extended.xslt
Normal file
104668
libraryExtended/src/main/resources/xslt/zugferd2p0_extended.xslt
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
6022
libraryExtended/src/main/resources/zugferd2p0_basicwl_minimum.sch
Executable file
6022
libraryExtended/src/main/resources/zugferd2p0_basicwl_minimum.sch
Executable file
File diff suppressed because it is too large
Load Diff
9581
libraryExtended/src/main/resources/zugferd2p0_en16931.sch
Executable file
9581
libraryExtended/src/main/resources/zugferd2p0_en16931.sch
Executable file
File diff suppressed because it is too large
Load Diff
20540
libraryExtended/src/main/resources/zugferd2p0_extended.sch
Executable file
20540
libraryExtended/src/main/resources/zugferd2p0_extended.sch
Executable file
File diff suppressed because it is too large
Load Diff
88
libraryExtended/src/test/java/ZUV/MiscValidatorTest.java
Normal file
88
libraryExtended/src/test/java/ZUV/MiscValidatorTest.java
Normal file
@@ -0,0 +1,88 @@
|
||||
package ZUV;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
|
||||
public class MiscValidatorTest extends ResourceCase {
|
||||
|
||||
|
||||
public void testInvalidFileValidation() {
|
||||
|
||||
ZUGFeRDValidator zfv=new ZUGFeRDValidator();
|
||||
|
||||
String res=zfv.validate(null);
|
||||
assertTrue(res.matches("<\\?xml version=\"1.0\" encoding=\"UTF-8\"\\?>\n" +
|
||||
"\n" +
|
||||
"<validation filename=\"\" datetime=\".*?\">\n" +
|
||||
" <messages>\n" +
|
||||
" <error type=\"10\">Filename not specified</error> \n" +
|
||||
" </messages>\n" +
|
||||
" <summary status=\"invalid\"/>\n" +
|
||||
"</validation>\n" +
|
||||
""));
|
||||
|
||||
res=zfv.validate("/dhfkbv/sfjkh");
|
||||
assertTrue(res.matches("<\\?xml version=\"1.0\" encoding=\"UTF-8\"\\?>\n" +
|
||||
"\n" +
|
||||
"<validation filename=\"sfjkh\" datetime=\".*?\">\n" +
|
||||
" <messages>\n" +
|
||||
" <error type=\"1\">File not found</error> \n" +
|
||||
" </messages>\n" +
|
||||
" <summary status=\"invalid\"/>\n" +
|
||||
"</validation>\n"));
|
||||
|
||||
boolean noExceptionOccurred=true;
|
||||
File tempFile=null;
|
||||
try {
|
||||
tempFile = File.createTempFile("hello", ".tmp");
|
||||
} catch (IOException e) {
|
||||
noExceptionOccurred=true;
|
||||
}
|
||||
assertTrue(noExceptionOccurred);
|
||||
|
||||
res=zfv.validate(tempFile.getAbsolutePath());
|
||||
assertTrue(res.matches("<\\?xml version=\"1.0\" encoding=\"UTF-8\"\\?>\n" +
|
||||
"\n" +
|
||||
"<validation filename=\".*\" datetime=\".*\">\n" +
|
||||
" <messages>\n" +
|
||||
" <error type=\"5\">File too small</error> \n" +
|
||||
" </messages>\n" +
|
||||
" <summary status=\"invalid\"/>\n" +
|
||||
"</validation>\n" +
|
||||
""));
|
||||
|
||||
|
||||
String fileContent = "ladhvkdbfk wkhfbkhdhkb svbkfsvbksfbvk sdvsdvbksjdvbkfdsv sdvbskdvbsjhkvbfskh dvbskfvbkfsbvke"
|
||||
+ "ladhvkdbfk wkhfbkhdhkb svbkfsvbksfbvk sdvsdvbksjdvbkfdsv sdvbskdvbsjhkvbfskh dvbskfvbkfsbvke";
|
||||
noExceptionOccurred=true;
|
||||
BufferedWriter writer;
|
||||
try {
|
||||
writer = new BufferedWriter(new FileWriter(tempFile));
|
||||
writer.write(fileContent);
|
||||
writer.close();
|
||||
} catch (IOException e) {
|
||||
noExceptionOccurred=false;
|
||||
}
|
||||
assertTrue(noExceptionOccurred);
|
||||
|
||||
|
||||
res=zfv.validate(tempFile.getAbsolutePath());
|
||||
assertTrue(res.matches("<\\?xml version=\"1.0\" encoding=\"UTF-8\"\\?>\n" +
|
||||
"\n" +
|
||||
"<validation filename=\".*\" datetime=\".*\">\n" +
|
||||
" <messages>\n" +
|
||||
" <exception type=\"8\">File does not look like PDF nor XML \\(contains neither %PDF nor <\\?xml\\)</exception> \n" +
|
||||
" </messages>\n" +
|
||||
" <summary status=\"invalid\"/>\n" +
|
||||
"</validation>\n" +
|
||||
""));
|
||||
|
||||
|
||||
// clean up
|
||||
tempFile.delete();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
139
libraryExtended/src/test/java/ZUV/PDFValidatorTest.java
Normal file
139
libraryExtended/src/test/java/ZUV/PDFValidatorTest.java
Normal file
@@ -0,0 +1,139 @@
|
||||
package ZUV;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class PDFValidatorTest extends ResourceCase {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(ZUGFeRDValidator.class.getCanonicalName()); // log
|
||||
|
||||
public void testPDFValidation() {
|
||||
ValidationContext vc = new ValidationContext(null);
|
||||
PDFValidator pv = new PDFValidator(vc);
|
||||
|
||||
try {
|
||||
|
||||
File tempFile = getResourceAsFile("XMLinvalidV2PDF.pdf");// need a more invalid file here
|
||||
|
||||
pv.setFilename(tempFile.getAbsolutePath());
|
||||
pv.validate();
|
||||
// assertEquals("", pv.getXMLResult());
|
||||
|
||||
//
|
||||
tempFile = getResourceAsFile("Facture_F20180027.pdf");
|
||||
pv.setFilename(tempFile.getAbsolutePath());
|
||||
pv.validate();
|
||||
String actual = pv.getXMLResult();
|
||||
assertEquals(true, actual.contains("summary status='valid"));
|
||||
assertEquals(false, actual.contains("summary status='invalid"));
|
||||
|
||||
XMLValidator xv = new XMLValidator(vc);
|
||||
xv.setStringContent(pv.getRawXML());
|
||||
xv.validate();
|
||||
actual = vc.getXMLResult();
|
||||
|
||||
assertEquals(true, actual.contains("validationReport profileName=\"PDF/A-3"));
|
||||
assertEquals(true, actual.contains("batchSummary totalJobs=\"1\" failedToParse=\"0\" encrypted=\"0\""));
|
||||
assertEquals(true,
|
||||
actual.contains("validationReports compliant=\"1\" nonCompliant=\"0\" failedJobs=\"0\">"));
|
||||
// test some xml
|
||||
// assertEquals(true, actual.contains("<error
|
||||
// location=\"/*:CrossIndustryInvoice[namespace-uri()='urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100'][1]/*:SupplyChainTradeTransaction[namespace-uri()='urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100'][1]/*:ApplicableHeaderTradeSettlement[namespace-uri()='urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'][1]/*:SpecifiedTradeSettlementHeaderMonetarySummation[namespace-uri()='urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'][1]/*:DuePayableAmount[namespace-uri()='urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'][1]\"
|
||||
// criterion=\"not(@currencyID)\">[CII-DT-031] - currencyID should not be
|
||||
// present</error>"));
|
||||
// test some binary signature recognition
|
||||
assertEquals(true, actual.contains("<version>2</version>"));
|
||||
|
||||
// valid one
|
||||
tempFile = getResourceAsFile("validV2PDF.pdf");
|
||||
|
||||
pv.setFilename(tempFile.getAbsolutePath());
|
||||
vc.clear();
|
||||
pv.validate();
|
||||
actual = pv.getXMLResult();
|
||||
assertEquals(true, actual.contains("validationReport profileName=\"PDF/A-3"));
|
||||
assertEquals(true, actual.contains("batchSummary totalJobs=\"1\" failedToParse=\"0\" encrypted=\"0\""));
|
||||
assertEquals(true,
|
||||
actual.contains("validationReports compliant=\"1\" nonCompliant=\"0\" failedJobs=\"0\">"));
|
||||
|
||||
assertEquals(false, actual.contains("<error"));
|
||||
} catch (IrrecoverableValidationError e) {
|
||||
// ignore, will be in XML output anyway
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void testPDFXMLValidation() {
|
||||
ValidationContext vc = new ValidationContext(null);
|
||||
try {
|
||||
PDFValidator pv = new PDFValidator(vc);
|
||||
|
||||
File tempFile = getResourceAsFile("attributeBasedXMP_zugferd_2p0_EN16931_Einfach.pdf");// need a more
|
||||
// invalid file here
|
||||
|
||||
pv.setFilename(tempFile.getAbsolutePath());
|
||||
pv.validate();
|
||||
String pdfvres = pv.getXMLResult();
|
||||
|
||||
XMLValidator xv = new XMLValidator(vc);
|
||||
|
||||
xv.setStringContent(pv.getRawXML());
|
||||
xv.validate();
|
||||
String xmlvres = xv.getXMLResult();
|
||||
|
||||
assertEquals(true, pdfvres.contains("valid") && !pdfvres.contains("invalid"));
|
||||
assertEquals(true, xmlvres.contains("invalid"));
|
||||
|
||||
vc.clear();
|
||||
tempFile = getResourceAsFile("validV1WithAdditionalData.pdf");// need a more invalid file here
|
||||
|
||||
pv.setFilename(tempFile.getAbsolutePath());
|
||||
pv.validate();
|
||||
pdfvres = pv.getXMLResult();
|
||||
|
||||
xv = new XMLValidator(vc);
|
||||
|
||||
xv.setStringContent(pv.getRawXML());
|
||||
xv.validate();
|
||||
xmlvres = xv.getXMLResult();
|
||||
assertEquals(true, pdfvres.contains("valid") && !pdfvres.contains("invalid"));
|
||||
assertEquals(true, xmlvres.contains("valid") && !xmlvres.contains("invalid"));
|
||||
} catch (IrrecoverableValidationError e) {
|
||||
// ignore, will be in XML output anyway
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void testXMPValidation() {
|
||||
|
||||
ValidationContext vc = new ValidationContext(null);
|
||||
PDFValidator pv = new PDFValidator(vc);
|
||||
try {
|
||||
|
||||
File tempFile = getResourceAsFile("invalidXMP.pdf");
|
||||
|
||||
pv.setFilename(tempFile.getAbsolutePath());
|
||||
vc.clear();
|
||||
pv.validate();
|
||||
String actual = pv.getXMLResult();
|
||||
|
||||
assertEquals(true, actual
|
||||
.contains("<error type=\"12\">XMP Metadata: ConformanceLevel contains invalid value</error>"));
|
||||
|
||||
tempFile = getResourceAsFile("attributeBasedXMP_zugferd_2p0_EN16931_Einfach.pdf");
|
||||
|
||||
pv.setFilename(tempFile.getAbsolutePath());
|
||||
vc.clear();
|
||||
pv.validate();
|
||||
actual = pv.getXMLResult();
|
||||
|
||||
assertEquals(false, actual.contains("<error"));// issue 18: "ConformanceLevel not found" should not be
|
||||
// reported since it's actually there
|
||||
} catch (IrrecoverableValidationError e) {
|
||||
// ignore, will be in XML output anyway
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
41
libraryExtended/src/test/java/ZUV/ResourceCase.java
Normal file
41
libraryExtended/src/test/java/ZUV/ResourceCase.java
Normal file
@@ -0,0 +1,41 @@
|
||||
package ZUV;
|
||||
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
public class ResourceCase extends TestCase {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(ResourceCase.class.getCanonicalName()); // log output is
|
||||
|
||||
public static File getResourceAsFile(String resourcePath) {
|
||||
try {
|
||||
InputStream in = ClassLoader.getSystemClassLoader().getResourceAsStream(resourcePath);
|
||||
if (in == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
File tempFile = File.createTempFile(String.valueOf(in.hashCode()), ".tmp");
|
||||
tempFile.deleteOnExit();
|
||||
|
||||
try (FileOutputStream out = new FileOutputStream(tempFile)) {
|
||||
// copy stream
|
||||
byte[] buffer = new byte[1024];
|
||||
int bytesRead;
|
||||
while ((bytesRead = in.read(buffer)) != -1) {
|
||||
out.write(buffer, 0, bytesRead);
|
||||
}
|
||||
}
|
||||
return tempFile;
|
||||
} catch (IOException e) {
|
||||
LOGGER.error(e.getMessage(), e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
195
libraryExtended/src/test/java/ZUV/XMLValidatorTest.java
Normal file
195
libraryExtended/src/test/java/ZUV/XMLValidatorTest.java
Normal file
@@ -0,0 +1,195 @@
|
||||
package ZUV;
|
||||
|
||||
import static org.xmlunit.assertj.XmlAssert.assertThat;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import javax.xml.transform.Source;
|
||||
|
||||
import org.xmlunit.builder.Input;
|
||||
import org.xmlunit.xpath.JAXPXPathEngine;
|
||||
import org.xmlunit.xpath.XPathEngine;
|
||||
|
||||
public class XMLValidatorTest extends ResourceCase {
|
||||
|
||||
public void testZF2XMLValidation() {
|
||||
// ignored for the
|
||||
// time being
|
||||
|
||||
ValidationContext ctx = new ValidationContext(null);
|
||||
XMLValidator xv = new XMLValidator(ctx);
|
||||
XPathEngine xpath = new JAXPXPathEngine();
|
||||
File tempFile = getResourceAsFile("invalidV2.xml");
|
||||
Source source;
|
||||
String content;
|
||||
|
||||
try {
|
||||
xv.setFilename(tempFile.getAbsolutePath());
|
||||
|
||||
xv.validate();
|
||||
|
||||
/*
|
||||
* assertEquals(true, xv.getXMLResult().
|
||||
* contains("<error location=\"/*[local-name()='CrossIndustryInvoice']/*[local-name()='SupplyChainTradeTransaction']/*[local-name()='ApplicableHeaderTradeSettlement']/*[local-name()='SpecifiedTradeSettlementHeaderMonetarySummation']\" criterion=\"(ram:LineTotalAmount)\">\n"
|
||||
* +
|
||||
* " Eine Rechnung (INVOICE) muss die Summe der Rechnungspositionen-Nettobeträge „Sum of Invoice line net amount“ (BT-106) enthalten.</error>\n"
|
||||
* +
|
||||
* "<error location=\"/*[local-name()='CrossIndustryInvoice']/*[local-name()='SupplyChainTradeTransaction']/*[local-name()='ApplicableHeaderTradeSettlement']/*[local-name()='SpecifiedTradeSettlementHeaderMonetarySummation']\" criterion=\"(ram:TaxBasisTotalAmount = ram:LineTotalAmount - ram:AllowanceTotalAmount + ram:ChargeTotalAmount) or ((ram:TaxBasisTotalAmount = ram:LineTotalAmount - ram:AllowanceTotalAmount) and not (ram:ChargeTotalAmount)) or ((ram:TaxBasisTotalAmount = ram:LineTotalAmount + ram:ChargeTotalAmount) and not (ram:AllowanceTotalAmount)) or ((ram:TaxBasisTotalAmount = ram:LineTotalAmount) and not (ram:ChargeTotalAmount) and not (ram:AllowanceTotalAmount))\">\n"
|
||||
* +
|
||||
* " Der Inhalt des Elementes „Invoice total amount without VAT“ (BT-109) entspricht der Summe aller Inhalte der Elemente „Invoice line net amount“ (BT-131) abzüglich der Summe aller in der Rechnung enthaltenen Nachlässe der Dokumentenebene „Sum of allowances on document level“ (BT-107) zuzüglich der Summe aller in der Rechnung enthaltenen Abgaben der Dokumentenebene „Sum of charges on document level“ (BT-108).</error>\n"
|
||||
* +
|
||||
* "<error location=\"/*[local-name()='CrossIndustryInvoice']/*[local-name()='SupplyChainTradeTransaction']/*[local-name()='ApplicableHeaderTradeSettlement']/*[local-name()='SpecifiedTradeSettlementHeaderMonetarySummation']\" criterion=\"(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]))\">\n"
|
||||
* +
|
||||
* " Der Inhalt des Elementes „Invoice total amount with VAT“ (BT-112) entspricht der Summe des Inhalts des Elementes „Invoice total amount without VAT“ (BT-109) und des Elementes „Invoice total VAT amount“ (BT-110).</error>\n"
|
||||
* +
|
||||
* "<error location=\"/*[local-name()='CrossIndustryInvoice']/*[local-name()='SupplyChainTradeTransaction']/*[local-name()='ApplicableHeaderTradeSettlement']/*[local-name()='SpecifiedTradeSettlementHeaderMonetarySummation']\" criterion=\"ram:LineTotalAmount = (round(sum(../../ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount) * 10 * 10)div 100)\">\n"
|
||||
* +
|
||||
* " Der Inhalt des Elementes „Sum of Invoice line net amount“ (BT-106) entspricht der Summe aller Inhalte der Elemente „Invoice line net amount“ (BT-131).</error>\n"
|
||||
* +
|
||||
* "<error location=\"/*[local-name()='CrossIndustryInvoice']\" criterion=\"(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name!='')\">\n"
|
||||
* +
|
||||
* " Eine Rechnung (INVOICE) muss den Erwerbernamen „Buyer name“ (BT-44) enthalten.</error>\n"
|
||||
* +
|
||||
* "<error location=\"/*[local-name()='CrossIndustryInvoice']/*[local-name()='SupplyChainTradeTransaction']/*[local-name()='ApplicableHeaderTradeAgreement']/*[local-name()='BuyerTradeParty']\" criterion=\"count(ram:Name)=1\">\n"
|
||||
* + " Das Element 'ram:Name' muss genau 1 mal auftreten.</error>\n" +
|
||||
* "<error location=\"/*[local-name()='CrossIndustryInvoice']/*[local-name()='SupplyChainTradeTransaction']/*[local-name()='ApplicableHeaderTradeSettlement']/*[local-name()='SpecifiedTradeSettlementHeaderMonetarySummation']\" criterion=\"count(ram:LineTotalAmount)=1\">\n"
|
||||
* + " Das Element 'ram:LineTotalAmount' muss genau 1 mal auftreten.</error>\n"
|
||||
* +
|
||||
* "<error location=\"/*[local-name()='CrossIndustryInvoice']/*[local-name()='SupplyChainTradeTransaction']/*[local-name()='IncludedSupplyChainTradeLineItem'][2]/*[local-name()='SpecifiedLineTradeDelivery']/*[local-name()='BilledQuantity']\" criterion=\"document('zugferd2p0_extended_codedb.xml')//cl[@id=7]/enumeration[@value=$codeValue7]\">\n"
|
||||
* + " Wert von '@unitCode' ist unzulässig.</error>\n" +
|
||||
* "</messages><summary status='invalid'/>"));
|
||||
*
|
||||
*/
|
||||
|
||||
tempFile = getResourceAsFile("invalidV2Profile.xml");
|
||||
|
||||
xv.setFilename(tempFile.getAbsolutePath());
|
||||
|
||||
xv.validate();
|
||||
} catch (IrrecoverableValidationError e) {
|
||||
// ignore, will be in XML output anyway
|
||||
}
|
||||
assertTrue(xv.getXMLResult().contains("<error type=\"25\""));
|
||||
ctx.clear();
|
||||
|
||||
try {
|
||||
|
||||
tempFile = getResourceAsFile("FAIL_zugferd_2p1_MINIMUM_Rechnung_380.xml");
|
||||
|
||||
xv.setFilename(tempFile.getAbsolutePath());
|
||||
|
||||
xv.validate();
|
||||
} catch (IrrecoverableValidationError e) {
|
||||
// ignore, will be in XML output anyway
|
||||
}
|
||||
String res = xv.getXMLResult();
|
||||
/*OutputStream os = null;
|
||||
try {
|
||||
os = new FileOutputStream(new File("return.xml"));
|
||||
os.write(res.getBytes(), 0, res.length());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
try {
|
||||
os.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}*/
|
||||
|
||||
content = "<xml>" + res + "</xml>";
|
||||
|
||||
assertThat(content).valueByXPath("count(//error)")
|
||||
.asInt()
|
||||
.isGreaterThan(1); //2 errors are OK because there is a known bug
|
||||
|
||||
|
||||
assertThat(content).valueByXPath("//error[@type=\"4\"]")
|
||||
.asString()
|
||||
.contains(
|
||||
"In Deutschland sind die Profile MINIMUM und BASIC WL nur als Buchungshilfe (TypeCode: 751) zugelassen.");
|
||||
|
||||
ctx.clear();
|
||||
|
||||
tempFile = getResourceAsFile("validV2Basic.xml");
|
||||
try {
|
||||
|
||||
xv.setFilename(tempFile.getAbsolutePath());
|
||||
xv.validate();
|
||||
assertEquals(true, xv.getXMLResult().contains("valid") && !xv.getXMLResult().contains("invalid"));
|
||||
|
||||
ctx.clear();
|
||||
tempFile = getResourceAsFile("ZUGFeRD-invoice_rabatte_3_abschlag_duepayableamount.xml");
|
||||
xv.setFilename(tempFile.getAbsolutePath());
|
||||
xv.validate();
|
||||
assertEquals(true, xv.getXMLResult().contains("valid") && !xv.getXMLResult().contains("invalid"));
|
||||
|
||||
ctx.clear();
|
||||
tempFile = getResourceAsFile("valid_Avoir_FR_type380_minimum_factur-x.xml");
|
||||
xv.setFilename(tempFile.getAbsolutePath());
|
||||
xv.validate();
|
||||
|
||||
source = Input.fromString("<xml>" + xv.getXMLResult() + "</xml>").build();
|
||||
content = xpath.evaluate("/xml/summary/@status", source);
|
||||
assertEquals("invalid", content);
|
||||
|
||||
// assertEquals(true, xv.getXMLResult().contains("valid") &&
|
||||
// !xv.getXMLResult().contains("invalid"));
|
||||
|
||||
/*
|
||||
* this test failure might have to be upstreamed ctx.clear(); tempFile =
|
||||
* getResourceAsFile(
|
||||
* "ZUGFeRD-invoice_rabatte_4_abschlag_taxbasistotalamount.xml");
|
||||
* xv.setFilename(tempFile.getAbsolutePath()); xv.validate(); assertEquals(true,
|
||||
* xv.getXMLResult().contains("valid") &&
|
||||
* !xv.getXMLResult().contains("invalid"));
|
||||
*/
|
||||
ctx.clear();
|
||||
tempFile = getResourceAsFile("attributeBasedXMP_zugferd_2p0_EN16931_Einfach_corrected.xml");
|
||||
xv.setFilename(tempFile.getAbsolutePath());
|
||||
xv.validate();
|
||||
assertEquals(true, xv.getXMLResult().contains("valid") && !xv.getXMLResult().contains("invalid"));
|
||||
|
||||
ctx.clear();
|
||||
tempFile = getResourceAsFile("validZREtestZugferd.xml");
|
||||
xv.setFilename(tempFile.getAbsolutePath());
|
||||
xv.validate();
|
||||
|
||||
source = Input.fromString("<xml>" + xv.getXMLResult() + "</xml>").build();
|
||||
content = xpath.evaluate("/xml/summary/@status", source);
|
||||
assertEquals("invalid", content);
|
||||
|
||||
} catch (IrrecoverableValidationError e) {
|
||||
// ignore, will be in XML output anyway
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void testZF1XMLValidation() {
|
||||
ValidationContext ctx = new ValidationContext(null);
|
||||
XMLValidator xv = new XMLValidator(ctx);
|
||||
File tempFile = getResourceAsFile("validV1.xml");
|
||||
try {
|
||||
xv.setFilename(tempFile.getAbsolutePath());
|
||||
xv.validate();
|
||||
assertEquals(true, xv.getXMLResult().contains("valid") && !xv.getXMLResult().contains("invalid"));
|
||||
|
||||
tempFile = getResourceAsFile("invalidV1ExtraTags.xml");
|
||||
xv.setFilename(tempFile.getAbsolutePath());
|
||||
xv.validate();
|
||||
assertEquals(true, xv.getXMLResult().contains("invalid"));
|
||||
|
||||
tempFile = getResourceAsFile("invalidV1TooMinimal.xml");
|
||||
xv.setFilename(tempFile.getAbsolutePath());
|
||||
xv.validate();
|
||||
assertEquals(true, xv.getXMLResult().contains("<error type=\"26\""));
|
||||
|
||||
} catch (IrrecoverableValidationError e) {
|
||||
// ignore, will be in XML output anyway
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
29
libraryExtended/src/test/java/ZUV/ZUGFeRDValidatorTest.java
Normal file
29
libraryExtended/src/test/java/ZUV/ZUGFeRDValidatorTest.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package ZUV;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class ZUGFeRDValidatorTest extends ResourceCase {
|
||||
|
||||
public void testPDFValidation() {
|
||||
File tempFile = getResourceAsFile("invalidPDF.pdf");
|
||||
ZUGFeRDValidator zfv = new ZUGFeRDValidator();
|
||||
|
||||
String report = zfv.validate(tempFile.getAbsolutePath());
|
||||
Pattern regex = Pattern.compile(".*status=\"invalid\".*/>\n </pdf>", Pattern.DOTALL);
|
||||
Matcher regexMatcher = regex.matcher(report);
|
||||
assertTrue(regexMatcher.find());
|
||||
regex = Pattern.compile(".*status=\"invalid\".*/>\n</validation>", Pattern.DOTALL);
|
||||
regexMatcher = regex.matcher(report);
|
||||
assertTrue(regexMatcher.find());
|
||||
|
||||
tempFile = getResourceAsFile("validAvoir_FR_type380_BASICWL.pdf");
|
||||
zfv = new ZUGFeRDValidator();
|
||||
|
||||
report = zfv.validate(tempFile.getAbsolutePath());
|
||||
assertEquals(true, report.contains("status=\"valid\""));
|
||||
assertEquals(false, report.contains("status=\"invalid\""));
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
<?xml version='1.0' encoding='UTF-8' ?>
|
||||
|
||||
<rsm:CrossIndustryInvoice xmlns:a="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice: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">
|
||||
<rsm:ExchangedDocumentContext>
|
||||
<ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
<ram:ID>urn:factur-x.eu:1p0:minimum</ram:ID>
|
||||
</ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
</rsm:ExchangedDocumentContext>
|
||||
<rsm:ExchangedDocument>
|
||||
<ram:ID>471102</ram:ID>
|
||||
<ram:TypeCode>380</ram:TypeCode>
|
||||
<ram:IssueDateTime>
|
||||
<udt:DateTimeString format="102">20200305</udt:DateTimeString>
|
||||
</ram:IssueDateTime>
|
||||
</rsm:ExchangedDocument>
|
||||
<rsm:SupplyChainTradeTransaction>
|
||||
<ram:ApplicableHeaderTradeAgreement>
|
||||
<ram:SellerTradeParty>
|
||||
<ram:Name>Lieferant GmbH</ram:Name>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode>80333</ram:PostcodeCode>
|
||||
<ram:LineOne>Lieferantenstraße 20</ram:LineOne>
|
||||
<ram:CityName>München</ram:CityName>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="FC">201/113/40209</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="VA">DE123456789</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
</ram:SellerTradeParty>
|
||||
<ram:BuyerTradeParty>
|
||||
<ram:Name>Kunden AG DE</ram:Name>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode>85001</ram:PostcodeCode>
|
||||
<ram:LineOne>Alexander Zahlt</ram:LineOne>
|
||||
<ram:LineTwo>Im Hofbräuhaus 2</ram:LineTwo>
|
||||
<ram:CityName>München</ram:CityName>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
</ram:BuyerTradeParty>
|
||||
</ram:ApplicableHeaderTradeAgreement>
|
||||
<ram:ApplicableHeaderTradeDelivery>
|
||||
</ram:ApplicableHeaderTradeDelivery>
|
||||
<ram:ApplicableHeaderTradeSettlement>
|
||||
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
|
||||
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||
<ram:LineTotalAmount>198.00</ram:LineTotalAmount>
|
||||
<ram:TaxBasisTotalAmount>198.00</ram:TaxBasisTotalAmount>
|
||||
<ram:TaxTotalAmount currencyID="EUR">37.62</ram:TaxTotalAmount>
|
||||
<ram:GrandTotalAmount>235.62</ram:GrandTotalAmount>
|
||||
<ram:DuePayableAmount>235.62</ram:DuePayableAmount>
|
||||
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||
</ram:ApplicableHeaderTradeSettlement>
|
||||
</rsm:SupplyChainTradeTransaction>
|
||||
</rsm:CrossIndustryInvoice>
|
||||
1865
libraryExtended/src/test/resources/Facture_F20180027.pdf
Normal file
1865
libraryExtended/src/test/resources/Facture_F20180027.pdf
Normal file
File diff suppressed because it is too large
Load Diff
BIN
libraryExtended/src/test/resources/XMLinvalidV2PDF.pdf
Normal file
BIN
libraryExtended/src/test/resources/XMLinvalidV2PDF.pdf
Normal file
Binary file not shown.
@@ -0,0 +1,109 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<rsm:CrossIndustryInvoice xmlns:a="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice: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">
|
||||
<rsm:ExchangedDocumentContext>
|
||||
<ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
<ram:ID>urn:cen.eu:en16931:2017</ram:ID>
|
||||
</ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
</rsm:ExchangedDocumentContext>
|
||||
<rsm:ExchangedDocument>
|
||||
<ram:ID>ST-1499</ram:ID>
|
||||
<ram:TypeCode>380</ram:TypeCode>
|
||||
<ram:IssueDateTime>
|
||||
<udt:DateTimeString format="102">20190726</udt:DateTimeString>
|
||||
</ram:IssueDateTime>
|
||||
<ram:IncludedNote>
|
||||
<ram:Content>Rechnung</ram:Content>
|
||||
</ram:IncludedNote>
|
||||
</rsm:ExchangedDocument>
|
||||
<rsm:SupplyChainTradeTransaction>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>0004</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:SellerAssignedID>0004</ram:SellerAssignedID>
|
||||
<ram:Name>pos 4</ram:Name>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
<ram:SpecifiedLineTradeAgreement>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount>20.00</ram:ChargeAmount>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedLineTradeAgreement>
|
||||
<ram:SpecifiedLineTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="H87">2.77</ram:BilledQuantity>
|
||||
</ram:SpecifiedLineTradeDelivery>
|
||||
<ram:SpecifiedLineTradeSettlement>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
<ram:LineTotalAmount>55.40</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
</ram:SpecifiedLineTradeSettlement>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:ApplicableHeaderTradeAgreement>
|
||||
<ram:SellerTradeParty>
|
||||
<ram:Name>DATAflor Musterbetrieb</ram:Name>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode>37079</ram:PostcodeCode>
|
||||
<ram:LineOne>August-Spindler-Straße 20</ram:LineOne>
|
||||
<ram:CityName>Göttingen</ram:CityName>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="VA">DE00000000</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
</ram:SellerTradeParty>
|
||||
<ram:BuyerTradeParty>
|
||||
<ram:Name>Thomas Adler</ram:Name>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
</ram:BuyerTradeParty>
|
||||
</ram:ApplicableHeaderTradeAgreement>
|
||||
<ram:ApplicableHeaderTradeDelivery>
|
||||
<ram:ActualDeliverySupplyChainEvent>
|
||||
<ram:OccurrenceDateTime>
|
||||
<udt:DateTimeString format="102">20190726</udt:DateTimeString>
|
||||
</ram:OccurrenceDateTime>
|
||||
</ram:ActualDeliverySupplyChainEvent>
|
||||
</ram:ApplicableHeaderTradeDelivery>
|
||||
<ram:ApplicableHeaderTradeSettlement>
|
||||
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:CalculatedAmount>10.34</ram:CalculatedAmount>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:BasisAmount>54.40</ram:BasisAmount>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeAllowanceCharge>
|
||||
<ram:ChargeIndicator>
|
||||
<udt:Indicator>false</udt:Indicator>
|
||||
</ram:ChargeIndicator>
|
||||
<ram:ActualAmount>1.00</ram:ActualAmount>
|
||||
<ram:Reason>sondernachlass</ram:Reason>
|
||||
<ram:CategoryTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
|
||||
</ram:CategoryTradeTax>
|
||||
</ram:SpecifiedTradeAllowanceCharge>
|
||||
<ram:SpecifiedTradePaymentTerms>
|
||||
<ram:Description />
|
||||
</ram:SpecifiedTradePaymentTerms>
|
||||
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||
<ram:LineTotalAmount>55.40</ram:LineTotalAmount>
|
||||
<ram:ChargeTotalAmount>0.00</ram:ChargeTotalAmount>
|
||||
<ram:AllowanceTotalAmount>1.00</ram:AllowanceTotalAmount>
|
||||
<ram:TaxBasisTotalAmount>54.40</ram:TaxBasisTotalAmount>
|
||||
<ram:TaxTotalAmount currencyID="EUR">10.34</ram:TaxTotalAmount>
|
||||
<ram:GrandTotalAmount>64.74</ram:GrandTotalAmount>
|
||||
<ram:TotalPrepaidAmount>50.00</ram:TotalPrepaidAmount>
|
||||
<ram:DuePayableAmount>14.74</ram:DuePayableAmount>
|
||||
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||
</ram:ApplicableHeaderTradeSettlement>
|
||||
</rsm:SupplyChainTradeTransaction>
|
||||
</rsm:CrossIndustryInvoice>
|
||||
@@ -0,0 +1,109 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<rsm:CrossIndustryInvoice xmlns:a="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice: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">
|
||||
<rsm:ExchangedDocumentContext>
|
||||
<ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
<ram:ID>urn:cen.eu:en16931:2017</ram:ID>
|
||||
</ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
</rsm:ExchangedDocumentContext>
|
||||
<rsm:ExchangedDocument>
|
||||
<ram:ID>ST-1496</ram:ID>
|
||||
<ram:TypeCode>380</ram:TypeCode>
|
||||
<ram:IssueDateTime>
|
||||
<udt:DateTimeString format="102">20190725</udt:DateTimeString>
|
||||
</ram:IssueDateTime>
|
||||
<ram:IncludedNote>
|
||||
<ram:Content>Rechnung</ram:Content>
|
||||
</ram:IncludedNote>
|
||||
</rsm:ExchangedDocument>
|
||||
<rsm:SupplyChainTradeTransaction>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>0001</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:SellerAssignedID>0001</ram:SellerAssignedID>
|
||||
<ram:Name>pos1</ram:Name>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
<ram:SpecifiedLineTradeAgreement>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount>8.76</ram:ChargeAmount>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedLineTradeAgreement>
|
||||
<ram:SpecifiedLineTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="H87">23.00</ram:BilledQuantity>
|
||||
</ram:SpecifiedLineTradeDelivery>
|
||||
<ram:SpecifiedLineTradeSettlement>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
<ram:LineTotalAmount>201.48</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
</ram:SpecifiedLineTradeSettlement>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:ApplicableHeaderTradeAgreement>
|
||||
<ram:SellerTradeParty>
|
||||
<ram:Name>DATAflor Musterbetrieb</ram:Name>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode>37079</ram:PostcodeCode>
|
||||
<ram:LineOne>August-Spindler-Straße 20</ram:LineOne>
|
||||
<ram:CityName>Göttingen</ram:CityName>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="VA">DE00000000</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
</ram:SellerTradeParty>
|
||||
<ram:BuyerTradeParty>
|
||||
<ram:Name>Thomas Adler</ram:Name>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
</ram:BuyerTradeParty>
|
||||
</ram:ApplicableHeaderTradeAgreement>
|
||||
<ram:ApplicableHeaderTradeDelivery>
|
||||
<ram:ActualDeliverySupplyChainEvent>
|
||||
<ram:OccurrenceDateTime>
|
||||
<udt:DateTimeString format="102">20190725</udt:DateTimeString>
|
||||
</ram:OccurrenceDateTime>
|
||||
</ram:ActualDeliverySupplyChainEvent>
|
||||
</ram:ApplicableHeaderTradeDelivery>
|
||||
<ram:ApplicableHeaderTradeSettlement>
|
||||
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:CalculatedAmount>36.94</ram:CalculatedAmount>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:BasisAmount>194.43</ram:BasisAmount>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeAllowanceCharge>
|
||||
<ram:ChargeIndicator>
|
||||
<udt:Indicator>false</udt:Indicator>
|
||||
</ram:ChargeIndicator>
|
||||
<ram:ActualAmount>7.05</ram:ActualAmount>
|
||||
<ram:Reason>Zu-/Abschlag</ram:Reason>
|
||||
<ram:CategoryTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
|
||||
</ram:CategoryTradeTax>
|
||||
</ram:SpecifiedTradeAllowanceCharge>
|
||||
<ram:SpecifiedTradePaymentTerms>
|
||||
<ram:Description />
|
||||
</ram:SpecifiedTradePaymentTerms>
|
||||
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||
<ram:LineTotalAmount>201.48</ram:LineTotalAmount>
|
||||
<ram:ChargeTotalAmount>0.00</ram:ChargeTotalAmount>
|
||||
<ram:AllowanceTotalAmount>7.05</ram:AllowanceTotalAmount>
|
||||
<ram:TaxBasisTotalAmount>194.43</ram:TaxBasisTotalAmount>
|
||||
<ram:TaxTotalAmount currencyID="EUR">36.94</ram:TaxTotalAmount>
|
||||
<ram:GrandTotalAmount>231.37</ram:GrandTotalAmount>
|
||||
<ram:TotalPrepaidAmount>10.00</ram:TotalPrepaidAmount>
|
||||
<ram:DuePayableAmount>221.37</ram:DuePayableAmount>
|
||||
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||
</ram:ApplicableHeaderTradeSettlement>
|
||||
</rsm:SupplyChainTradeTransaction>
|
||||
</rsm:CrossIndustryInvoice>
|
||||
Binary file not shown.
@@ -0,0 +1,199 @@
|
||||
<?xml version='1.0' encoding='UTF-8' ?>
|
||||
|
||||
<!--Nutzungsrechte
|
||||
ZUGFeRD Datenformat Version 2.0, 30.11.2018
|
||||
Beispiel Version 30.11.2018
|
||||
|
||||
Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung
|
||||
eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht
|
||||
diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“)
|
||||
|
||||
Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung
|
||||
frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine
|
||||
Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht
|
||||
diskriminierenden Bedingungen an.
|
||||
|
||||
Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung
|
||||
abrufbar unter www.ferd-net.de.
|
||||
|
||||
Im Einzelnen schließt die Nutzungsgewährung ein:
|
||||
=====================================
|
||||
|
||||
FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils
|
||||
geltenden und akzeptierten Fassung (www.ferd-net.de) ein.
|
||||
Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung,
|
||||
Weiterbearbeitung und Verbindung mit anderen Produkten.
|
||||
Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder
|
||||
anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige
|
||||
Anwendungen und Dienste.
|
||||
Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente
|
||||
und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um
|
||||
notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch
|
||||
die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden.
|
||||
Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares,
|
||||
unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit
|
||||
anderen Produkten einzuräumen.
|
||||
|
||||
Die Lizenz wird kostenfrei zur Verfügung gestellt.
|
||||
|
||||
Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen
|
||||
Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten,
|
||||
Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete,
|
||||
beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der
|
||||
Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können.-->
|
||||
<rsm:CrossIndustryInvoice xmlns:a="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice: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">
|
||||
<rsm:ExchangedDocumentContext>
|
||||
<ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
<ram:ID>urn:cen.eu:en16931:2017</ram:ID>
|
||||
</ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
</rsm:ExchangedDocumentContext>
|
||||
<rsm:ExchangedDocument>
|
||||
<ram:ID>471102</ram:ID>
|
||||
<ram:TypeCode>380</ram:TypeCode>
|
||||
<ram:IssueDateTime>
|
||||
<udt:DateTimeString format="102">20180305</udt:DateTimeString>
|
||||
</ram:IssueDateTime>
|
||||
<ram:IncludedNote>
|
||||
<ram:Content>Rechnung gemäß Bestellung vom 01.03.2018.</ram:Content>
|
||||
</ram:IncludedNote>
|
||||
<ram:IncludedNote>
|
||||
<ram:Content>Lieferant GmbH
|
||||
Lieferantenstraße 20
|
||||
80333 München
|
||||
Deutschland
|
||||
Geschäftsführer: Hans Muster
|
||||
Handelsregisternummer: H A 123
|
||||
</ram:Content>
|
||||
<ram:SubjectCode>REG</ram:SubjectCode>
|
||||
</ram:IncludedNote>
|
||||
</rsm:ExchangedDocument>
|
||||
<rsm:SupplyChainTradeTransaction>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>1</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:GlobalID schemeID="0160">4012345001235</ram:GlobalID>
|
||||
<ram:SellerAssignedID>TB100A4</ram:SellerAssignedID>
|
||||
<ram:Name>Trennblätter A4</ram:Name>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
<ram:SpecifiedLineTradeAgreement>
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
<ram:ChargeAmount>9.9000</ram:ChargeAmount>
|
||||
</ram:GrossPriceProductTradePrice>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount>9.9000</ram:ChargeAmount>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedLineTradeAgreement>
|
||||
<ram:SpecifiedLineTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="C62">20.0000</ram:BilledQuantity>
|
||||
</ram:SpecifiedLineTradeDelivery>
|
||||
<ram:SpecifiedLineTradeSettlement>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
<ram:LineTotalAmount>198.00</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
</ram:SpecifiedLineTradeSettlement>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>2</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:GlobalID schemeID="0160">4000050986428</ram:GlobalID>
|
||||
<ram:SellerAssignedID>ARNR2</ram:SellerAssignedID>
|
||||
<ram:Name>Joghurt Banane</ram:Name>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
<ram:SpecifiedLineTradeAgreement>
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
<ram:ChargeAmount>5.5000</ram:ChargeAmount>
|
||||
</ram:GrossPriceProductTradePrice>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount>5.5000</ram:ChargeAmount>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedLineTradeAgreement>
|
||||
<ram:SpecifiedLineTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="C62">50.0000</ram:BilledQuantity>
|
||||
</ram:SpecifiedLineTradeDelivery>
|
||||
<ram:SpecifiedLineTradeSettlement>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>7.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
<ram:LineTotalAmount>275.00</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
</ram:SpecifiedLineTradeSettlement>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:ApplicableHeaderTradeAgreement>
|
||||
<ram:SellerTradeParty>
|
||||
<ram:GlobalID schemeID="0088">4000001123452</ram:GlobalID>
|
||||
<ram:Name>Lieferant GmbH</ram:Name>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode>80333</ram:PostcodeCode>
|
||||
<ram:LineOne>Lieferantenstraße 20</ram:LineOne>
|
||||
<ram:CityName>München</ram:CityName>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="FC">201/113/40209</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="VA">DE123456789</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
</ram:SellerTradeParty>
|
||||
<ram:BuyerTradeParty>
|
||||
<ram:GlobalID schemeID="0088">4000001987658</ram:GlobalID>
|
||||
<ram:Name>Kunden AG Mitte</ram:Name>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode>69876</ram:PostcodeCode>
|
||||
<ram:LineOne>Kundenstraße 15</ram:LineOne>
|
||||
<ram:CityName>Frankfurt</ram:CityName>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
</ram:BuyerTradeParty>
|
||||
</ram:ApplicableHeaderTradeAgreement>
|
||||
<ram:ApplicableHeaderTradeDelivery>
|
||||
<ram:ActualDeliverySupplyChainEvent>
|
||||
<ram:OccurrenceDateTime>
|
||||
<udt:DateTimeString format="102">20180305</udt:DateTimeString>
|
||||
</ram:OccurrenceDateTime>
|
||||
</ram:ActualDeliverySupplyChainEvent>
|
||||
</ram:ApplicableHeaderTradeDelivery>
|
||||
<ram:ApplicableHeaderTradeSettlement>
|
||||
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:CalculatedAmount>19.25</ram:CalculatedAmount>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:BasisAmount>275.00</ram:BasisAmount>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>7.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:CalculatedAmount>37.62</ram:CalculatedAmount>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:BasisAmount>198.00</ram:BasisAmount>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradePaymentTerms>
|
||||
<ram:Description>Zahlbar innerhalb 30 Tagen netto bis 04.04.2018, 3% Skonto innerhalb 10 Tagen bis 15.03.2018</ram:Description>
|
||||
</ram:SpecifiedTradePaymentTerms>
|
||||
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||
<ram:LineTotalAmount>473.00</ram:LineTotalAmount>
|
||||
<ram:ChargeTotalAmount>0.00</ram:ChargeTotalAmount>
|
||||
<ram:AllowanceTotalAmount>0.00</ram:AllowanceTotalAmount>
|
||||
<ram:TaxBasisTotalAmount>473.00</ram:TaxBasisTotalAmount>
|
||||
<ram:TaxTotalAmount currencyID="EUR">56.87</ram:TaxTotalAmount>
|
||||
<ram:GrandTotalAmount>529.87</ram:GrandTotalAmount>
|
||||
<ram:TotalPrepaidAmount>0.00</ram:TotalPrepaidAmount>
|
||||
<ram:DuePayableAmount>529.87</ram:DuePayableAmount>
|
||||
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||
</ram:ApplicableHeaderTradeSettlement>
|
||||
</rsm:SupplyChainTradeTransaction>
|
||||
</rsm:CrossIndustryInvoice>
|
||||
BIN
libraryExtended/src/test/resources/corruptedV2PDF.pdf
Normal file
BIN
libraryExtended/src/test/resources/corruptedV2PDF.pdf
Normal file
Binary file not shown.
BIN
libraryExtended/src/test/resources/invalidPDF.pdf
Normal file
BIN
libraryExtended/src/test/resources/invalidPDF.pdf
Normal file
Binary file not shown.
117
libraryExtended/src/test/resources/invalidV1.xml
Executable file
117
libraryExtended/src/test/resources/invalidV1.xml
Executable file
@@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<rsm:CrossIndustryDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15">
|
||||
<rsm:SpecifiedExchangedDocumentContext>
|
||||
<ram:TestIndicator>
|
||||
<udt:Indicator>false</udt:Indicator>
|
||||
</ram:TestIndicator>
|
||||
<ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
<ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:extended</ram:ID>
|
||||
</ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
</rsm:SpecifiedExchangedDocumentContext>
|
||||
<rsm:HederExchangedDocument>
|
||||
<ram:ID>57144</ram:ID>
|
||||
<ram:Name>RECHNUNG</ram:Name>
|
||||
<ram:TypeCode>380</ram:TypeCode>
|
||||
<ram:IssueDateTime>
|
||||
<udt:DateTimeString format="1020">00010101</udt:DateTimeString>
|
||||
</ram:IssueDateTime>
|
||||
</rsm:HederExchangedDocument>
|
||||
<rsm:SpecifiedSupplyChainTradeTransaction>
|
||||
<ram:ApplicableSupplyChainTradeAgreement>
|
||||
<ram:SellerTradeParty>
|
||||
<ram:Name>------</ram:Name>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode>--- </ram:PostcodeCode>
|
||||
<ram:LineOne>Flugplatz A 70/B0-1</ram:LineOne>
|
||||
<ram:CityName>----</ram:CityName>
|
||||
<ram:CountryID>AF</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
</ram:SellerTradeParty>
|
||||
<ram:BuyerTradeParty>
|
||||
<ram:ID>123</ram:ID>
|
||||
<ram:Name>---- </ram:Name>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode>1234</ram:PostcodeCode>
|
||||
<ram:LineOne>Strassev sfsdfsaf</ram:LineOne>
|
||||
<ram:CityName>---</ram:CityName>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
</ram:BuyerTradeParty>
|
||||
</ram:ApplicableSupplyChainTradeAgreement>
|
||||
<ram:ApplicableSupplyChainTradeDelivery />
|
||||
<ram:ApplicableSupplyChainTradeSettlement>
|
||||
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
|
||||
<ram:SpecifiedTradePaymentTerms>
|
||||
<ram:Description>Bis zum 19.05.2019 mit 2% Skonto (=1,98).
|
||||
Bis zum 20.05.2019 netto; </ram:Description>
|
||||
</ram:SpecifiedTradePaymentTerms>
|
||||
<ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
<ram:LineTotalAmount currencyID="EUR">60.00</ram:LineTotalAmount>
|
||||
<ram:ChargeTotalAmount currencyID="EUR">40.00</ram:ChargeTotalAmount>
|
||||
<ram:AllowanceTotalAmount currencyID="EUR">17.00</ram:AllowanceTotalAmount>
|
||||
<ram:TaxBasisTotalAmount currencyID="EUR">83.00</ram:TaxBasisTotalAmount>
|
||||
<ram:TaxTotalAmount currencyID="EUR">15.77</ram:TaxTotalAmount>
|
||||
<ram:GrandTotalAmount currencyID="EUR">98.77</ram:GrandTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
</ram:ApplicableSupplyChainTradeSettlement>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>1</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedSupplyChainTradeAgreement>
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">20.0000</ram:ChargeAmount>
|
||||
<ram:AppliedTradeAllowanceCharge>
|
||||
<ram:ChargeIndicator>
|
||||
<udt:Indicator>false</udt:Indicator>
|
||||
</ram:ChargeIndicator>
|
||||
<ram:BasisAmount currencyID="EUR">10.0000</ram:BasisAmount>
|
||||
<ram:ActualAmount currencyID="EUR">10.0000</ram:ActualAmount>
|
||||
<ram:Reason>Abschlag</ram:Reason>
|
||||
</ram:AppliedTradeAllowanceCharge>
|
||||
</ram:GrossPriceProductTradePrice>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">10.0000</ram:ChargeAmount>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedSupplyChainTradeAgreement>
|
||||
<ram:SpecifiedSupplyChainTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="C62">1.0000</ram:BilledQuantity>
|
||||
</ram:SpecifiedSupplyChainTradeDelivery>
|
||||
<ram:SpecifiedSupplyChainTradeSettlement>
|
||||
<ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
<ram:LineTotalAmount currencyID="EUR">10.00</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
</ram:SpecifiedSupplyChainTradeSettlement>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:Name>1</ram:Name>
|
||||
<ram:Description>3053.4.0.009
|
||||
Test Halter.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................</ram:Description>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>2</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedSupplyChainTradeAgreement>
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">50.0000</ram:ChargeAmount>
|
||||
</ram:GrossPriceProductTradePrice>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">50.0000</ram:ChargeAmount>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedSupplyChainTradeAgreement>
|
||||
<ram:SpecifiedSupplyChainTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="C62">1.0000</ram:BilledQuantity>
|
||||
</ram:SpecifiedSupplyChainTradeDelivery>
|
||||
<ram:SpecifiedSupplyChainTradeSettlement>
|
||||
<ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
<ram:LineTotalAmount currencyID="EUR">50.00</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
</ram:SpecifiedSupplyChainTradeSettlement>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:Name>B405</ram:Name>
|
||||
<ram:Description>Radbagger klein</ram:Description>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
</rsm:SpecifiedSupplyChainTradeTransaction>
|
||||
</rsm:CrossIndustryDocument>
|
||||
200
libraryExtended/src/test/resources/invalidV1ExtraTags.xml
Normal file
200
libraryExtended/src/test/resources/invalidV1ExtraTags.xml
Normal file
@@ -0,0 +1,200 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<rsm:CrossIndustryDocument xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12" xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0">
|
||||
<rsm:SpecifiedExchangedDocumentContext>
|
||||
<ram:TestIndicator>
|
||||
<udt:Indicator>false</udt:Indicator>
|
||||
</ram:TestIndicator>
|
||||
<ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
<ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:extended</ram:ID>
|
||||
</ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
</rsm:SpecifiedExchangedDocumentContext>
|
||||
<rsm:HeaderExchangedDocument>
|
||||
<ram:ID>RE-20171118/506</ram:ID>
|
||||
<ram:Name>RECHNUNG</ram:Name>
|
||||
<ram:TypeCode>380</ram:TypeCode>
|
||||
<ram:IssueDateTime>
|
||||
<udt:DateTimeString format="102">20171118</udt:DateTimeString>
|
||||
</ram:IssueDateTime>
|
||||
</rsm:HeaderExchangedDocument>
|
||||
<rsm:FooterExchangedDocument>
|
||||
</rsm:FooterExchangedDocument>
|
||||
|
||||
<rsm:SpecifiedSupplyChainTradeTransaction>
|
||||
<ram:ApplicableSupplyChainTradeAgreement>
|
||||
<ram:SellerTradeParty>
|
||||
<ram:Name>Bei Spiel GmbH</ram:Name>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode>12345</ram:PostcodeCode>
|
||||
<ram:LineOne>Ecke 12</ram:LineOne>
|
||||
<ram:CityName>Stadthausen</ram:CityName>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="FC">22/815/0815/4</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="VA">DE136695976</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
</ram:SellerTradeParty>
|
||||
<ram:BuyerTradeParty>
|
||||
<ram:Name>Theodor Est</ram:Name>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode>88802</ram:PostcodeCode>
|
||||
<ram:LineOne>Bahnstr. 42</ram:LineOne>
|
||||
<ram:CityName>Spielkreis</ram:CityName>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="VA">DE999999999</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
</ram:BuyerTradeParty>
|
||||
</ram:ApplicableSupplyChainTradeAgreement>
|
||||
<ram:ApplicableSupplyChainTradeDelivery>
|
||||
<ram:ActualDeliverySupplyChainEvent>
|
||||
<ram:OccurrenceDateTime>
|
||||
<udt:DateTimeString format="102">20171117</udt:DateTimeString>
|
||||
</ram:OccurrenceDateTime>
|
||||
</ram:ActualDeliverySupplyChainEvent>
|
||||
</ram:ApplicableSupplyChainTradeDelivery>
|
||||
<ram:ApplicableSupplyChainTradeSettlement>
|
||||
<ram:PaymentReference>RE-20171118/506</ram:PaymentReference>
|
||||
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
|
||||
<ram:SpecifiedTradeSettlementPaymentMeans>
|
||||
<ram:TypeCode>42</ram:TypeCode>
|
||||
<ram:Information>Überweisung</ram:Information>
|
||||
<ram:PayeePartyCreditorFinancialAccount>
|
||||
<ram:IBANID>DE88 2008 0000 0970 3757 00</ram:IBANID>
|
||||
</ram:PayeePartyCreditorFinancialAccount>
|
||||
<ram:PayeeSpecifiedCreditorFinancialInstitution>
|
||||
<ram:BICID>COBADEFFXXX</ram:BICID>
|
||||
<ram:Name>Commerzbank</ram:Name>
|
||||
</ram:PayeeSpecifiedCreditorFinancialInstitution>
|
||||
</ram:SpecifiedTradeSettlementPaymentMeans>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:CalculatedAmount currencyID="EUR">11.20</ram:CalculatedAmount>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:BasisAmount currencyID="EUR">160.00</ram:BasisAmount>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:ApplicablePercent>7.00</ram:ApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:CalculatedAmount currencyID="EUR">63.84</ram:CalculatedAmount>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:BasisAmount currencyID="EUR">336.00</ram:BasisAmount>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:ApplicablePercent>19.00</ram:ApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradePaymentTerms>
|
||||
<ram:Description>Zahlbar ohne Abzug bis zum 09.12.2017</ram:Description>
|
||||
<ram:DueDateDateTime>
|
||||
<udt:DateTimeString format="102">20171209</udt:DateTimeString>
|
||||
</ram:DueDateDateTime>
|
||||
</ram:SpecifiedTradePaymentTerms>
|
||||
<ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
<ram:LineTotalAmount currencyID="EUR">496.00</ram:LineTotalAmount>
|
||||
<ram:ChargeTotalAmount currencyID="EUR">0.00</ram:ChargeTotalAmount>
|
||||
<ram:AllowanceTotalAmount currencyID="EUR">0.00</ram:AllowanceTotalAmount>
|
||||
<ram:TaxBasisTotalAmount currencyID="EUR">496.00</ram:TaxBasisTotalAmount>
|
||||
<ram:TaxTotalAmount currencyID="EUR">75.04</ram:TaxTotalAmount>
|
||||
<ram:GrandTotalAmount currencyID="EUR">571.04</ram:GrandTotalAmount>
|
||||
<ram:DuePayableAmount currencyID="EUR">571.04</ram:DuePayableAmount>
|
||||
</ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
</ram:ApplicableSupplyChainTradeSettlement>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>1</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedSupplyChainTradeAgreement>
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">160.0000</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="HUR">1.0000</ram:BasisQuantity>
|
||||
</ram:GrossPriceProductTradePrice>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">160.0000</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="HUR">1.0000</ram:BasisQuantity>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedSupplyChainTradeAgreement>
|
||||
<ram:SpecifiedSupplyChainTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="HUR">1.0000</ram:BilledQuantity>
|
||||
</ram:SpecifiedSupplyChainTradeDelivery>
|
||||
<ram:SpecifiedSupplyChainTradeSettlement>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:ApplicablePercent>7.00</ram:ApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
<ram:LineTotalAmount currencyID="EUR">160.00</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
</ram:SpecifiedSupplyChainTradeSettlement>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:Name>Künstlerische Gestaltung (Stunde): Einer Beispielrechnung</ram:Name>
|
||||
<ram:Description></ram:Description>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>2</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedSupplyChainTradeAgreement>
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">0.7900</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="C62">1.0000</ram:BasisQuantity>
|
||||
</ram:GrossPriceProductTradePrice>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">0.7900</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="C62">1.0000</ram:BasisQuantity>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedSupplyChainTradeAgreement>
|
||||
<ram:SpecifiedSupplyChainTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="C62">400.0000</ram:BilledQuantity>
|
||||
</ram:SpecifiedSupplyChainTradeDelivery>
|
||||
<ram:SpecifiedSupplyChainTradeSettlement>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:ApplicablePercent>19.00</ram:ApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
<ram:LineTotalAmount currencyID="EUR">316.00</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
</ram:SpecifiedSupplyChainTradeSettlement>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:Name>Luftballon: Bunt, ca. 500ml</ram:Name>
|
||||
<ram:Description></ram:Description>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>3</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedSupplyChainTradeAgreement>
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">0.1000</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="LTR">1.0000</ram:BasisQuantity>
|
||||
</ram:GrossPriceProductTradePrice>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">0.1000</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="LTR">1.0000</ram:BasisQuantity>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedSupplyChainTradeAgreement>
|
||||
<ram:SpecifiedSupplyChainTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="LTR">200.0000</ram:BilledQuantity>
|
||||
</ram:SpecifiedSupplyChainTradeDelivery>
|
||||
<ram:SpecifiedSupplyChainTradeSettlement>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:ApplicablePercent>19.00</ram:ApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
<ram:LineTotalAmount currencyID="EUR">20.00</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
</ram:SpecifiedSupplyChainTradeSettlement>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:Name>Heiße Luft pro Liter</ram:Name>
|
||||
<ram:Description></ram:Description>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
</rsm:SpecifiedSupplyChainTradeTransaction>
|
||||
</rsm:CrossIndustryDocument>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<rsm:CrossIndustryDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15">
|
||||
<ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
<ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:extended</ram:ID>
|
||||
</ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
</rsm:CrossIndustryDocument>
|
||||
187
libraryExtended/src/test/resources/invalidV2.xml
Normal file
187
libraryExtended/src/test/resources/invalidV2.xml
Normal file
@@ -0,0 +1,187 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<rsm:CrossIndustryInvoice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">
|
||||
<rsm:ExchangedDocumentContext>
|
||||
<ram:TestIndicator><udt:Indicator>false</udt:Indicator></ram:TestIndicator>
|
||||
<ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
<ram:ID>urn:cen.eu:en16931:2017:compliant:factur-x.eu:1p0:extended</ram:ID>
|
||||
</ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
</rsm:ExchangedDocumentContext>
|
||||
<rsm:ExchangedDocument>
|
||||
<ram:ID>RE-20171118/506</ram:ID>
|
||||
<ram:TypeCode>381</ram:TypeCode>
|
||||
<ram:IssueDateTime><udt:DateTimeString format="102">20171118</udt:DateTimeString></ram:IssueDateTime>
|
||||
</rsm:ExchangedDocument>
|
||||
<rsm:SupplyChainTradeTransaction>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>1</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:Name>Künstlerische Gestaltung (Stunde): Einer Beispielrechnung</ram:Name>
|
||||
<ram:Description></ram:Description>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
<ram:SpecifiedLineTradeAgreement>
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">160.0000</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="HUR">1.0000</ram:BasisQuantity>
|
||||
</ram:GrossPriceProductTradePrice>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">160.0000</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="HUR">1.0000</ram:BasisQuantity>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedLineTradeAgreement>
|
||||
<ram:SpecifiedLineTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="HUR">1.0000</ram:BilledQuantity>
|
||||
</ram:SpecifiedLineTradeDelivery>
|
||||
<ram:SpecifiedLineTradeSettlement>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>7.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
<ram:LineTotalAmount currencyID="EUR">160.00</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
</ram:SpecifiedLineTradeSettlement>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>2</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:Name>Luftballon: Bunt, ca. 500ml</ram:Name>
|
||||
<ram:Description></ram:Description>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
<ram:SpecifiedLineTradeAgreement>
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">0.7900</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="C62">1.0000</ram:BasisQuantity>
|
||||
</ram:GrossPriceProductTradePrice>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">0.7900</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="C62">1.0000</ram:BasisQuantity>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedLineTradeAgreement>
|
||||
<ram:SpecifiedLineTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="PIECE">400.0000</ram:BilledQuantity>
|
||||
</ram:SpecifiedLineTradeDelivery>
|
||||
<ram:SpecifiedLineTradeSettlement>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
<ram:LineTotalAmount currencyID="EUR">316.00</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
</ram:SpecifiedLineTradeSettlement>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>3</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:Name>Heiße Luft pro Liter</ram:Name>
|
||||
<ram:Description></ram:Description>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
<ram:SpecifiedLineTradeAgreement>
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">0.1000</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="LTR">1.0000</ram:BasisQuantity>
|
||||
</ram:GrossPriceProductTradePrice>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">0.1000</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="LTR">1.0000</ram:BasisQuantity>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedLineTradeAgreement>
|
||||
<ram:SpecifiedLineTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="LTR">200.0000</ram:BilledQuantity>
|
||||
</ram:SpecifiedLineTradeDelivery>
|
||||
<ram:SpecifiedLineTradeSettlement>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
<ram:LineTotalAmount currencyID="EUR">20.00</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
</ram:SpecifiedLineTradeSettlement>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:ApplicableHeaderTradeAgreement>
|
||||
<ram:SellerTradeParty>
|
||||
<ram:Name>Bei Spiel GmbH</ram:Name>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode>12345</ram:PostcodeCode>
|
||||
<ram:LineOne>Ecke 12</ram:LineOne>
|
||||
<ram:CityName>Stadthausen</ram:CityName>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="FC">22/815/0815/4</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="VA">DE136695976</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
</ram:SellerTradeParty>
|
||||
<ram:BuyerTradeParty>
|
||||
<ram:EntityName>Theodor Est</ram:EntityName>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode>88802</ram:PostcodeCode>
|
||||
<ram:LineOne>Bahnstr. 42</ram:LineOne>
|
||||
<ram:CityName>Spielkreis</ram:CityName>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="VA">DE999999999</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
</ram:BuyerTradeParty>
|
||||
</ram:ApplicableHeaderTradeAgreement>
|
||||
<ram:ApplicableHeaderTradeDelivery>
|
||||
<ram:ActualDeliverySupplyChainEvent>
|
||||
<ram:OccurrenceDateTime><udt:DateTimeString format="102">20171117</udt:DateTimeString></ram:OccurrenceDateTime>
|
||||
</ram:ActualDeliverySupplyChainEvent>
|
||||
</ram:ApplicableHeaderTradeDelivery>
|
||||
<ram:ApplicableHeaderTradeSettlement>
|
||||
<ram:PaymentReference>RE-20171118/506</ram:PaymentReference>
|
||||
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
|
||||
<ram:SpecifiedTradeSettlementPaymentMeans>
|
||||
<ram:TypeCode>42</ram:TypeCode>
|
||||
<ram:Information>Überweisung</ram:Information>
|
||||
<ram:PayeePartyCreditorFinancialAccount>
|
||||
<ram:IBANID>DE88 2008 0000 0970 3757 00</ram:IBANID>
|
||||
</ram:PayeePartyCreditorFinancialAccount>
|
||||
<ram:PayeeSpecifiedCreditorFinancialInstitution>
|
||||
<ram:BICID>COBADEFFXXX</ram:BICID>
|
||||
<ram:Name>Commerzbank</ram:Name>
|
||||
</ram:PayeeSpecifiedCreditorFinancialInstitution>
|
||||
</ram:SpecifiedTradeSettlementPaymentMeans>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:CalculatedAmount currencyID="EUR">11.20</ram:CalculatedAmount>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:BasisAmount currencyID="EUR">160.00</ram:BasisAmount>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>7.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:CalculatedAmount currencyID="EUR">63.84</ram:CalculatedAmount>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:BasisAmount currencyID="ECU">336.00</ram:BasisAmount>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradePaymentTerms>
|
||||
<ram:Description>Zahlbar ohne Abzug bis 09.12.2017</ram:Description>
|
||||
<ram:DueDateDateTime><udt:DateTimeString format="102">20171209</udt:DateTimeString></ram:DueDateDateTime>
|
||||
</ram:SpecifiedTradePaymentTerms>
|
||||
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||
<ram:ChargeTotalAmount currencyID="EUR">0.00</ram:ChargeTotalAmount>
|
||||
<ram:AllowanceTotalAmount currencyID="EUR">0.00</ram:AllowanceTotalAmount>
|
||||
<ram:TaxBasisTotalAmount currencyID="EUR">497.14</ram:TaxBasisTotalAmount>
|
||||
<ram:TaxTotalAmount currencyID="EUR">75.04</ram:TaxTotalAmount>
|
||||
<ram:GrandTotalAmount currencyID="EUR">571.04</ram:GrandTotalAmount>
|
||||
<ram:DuePayableAmount currencyID="EUR">571.04</ram:DuePayableAmount>
|
||||
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||
</ram:ApplicableHeaderTradeSettlement>
|
||||
</rsm:SupplyChainTradeTransaction>
|
||||
</rsm:CrossIndustryInvoice>
|
||||
229
libraryExtended/src/test/resources/invalidV2Profile.xml
Normal file
229
libraryExtended/src/test/resources/invalidV2Profile.xml
Normal file
@@ -0,0 +1,229 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
|
||||
Nutzungsrechte
|
||||
ZUGFeRD Datenformat Version 1.0, 25.6.2014
|
||||
Beispiel Version 29.09.2014
|
||||
|
||||
Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung
|
||||
eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht
|
||||
diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“)
|
||||
|
||||
Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung
|
||||
frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine
|
||||
Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht
|
||||
diskriminierenden Bedingungen an.
|
||||
|
||||
Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung
|
||||
abrufbar unter www.ferd-net.de.
|
||||
|
||||
Im Einzelnen schließt die Nutzungsgewährung ein:
|
||||
=====================================
|
||||
|
||||
FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils
|
||||
geltenden und akzeptierten Fassung (www.ferd-net.de) ein.
|
||||
Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung,
|
||||
Weiterbearbeitung und Verbindung mit anderen Produkten.
|
||||
Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder
|
||||
anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige
|
||||
Anwendungen und Dienste.
|
||||
Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente
|
||||
und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um
|
||||
notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch
|
||||
die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden.
|
||||
Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares,
|
||||
unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit
|
||||
anderen Produkten einzuräumen.
|
||||
|
||||
Die Lizenz wird kostenfrei zur Verfügung gestellt.
|
||||
|
||||
Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen
|
||||
Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten,
|
||||
Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete,
|
||||
beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der
|
||||
Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können.
|
||||
|
||||
-->
|
||||
<rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
|
||||
xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
xmlns:qdt="urn:un:unece:uncefact:data:Standard:QualifiedDataType:100"
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"><!--
|
||||
Migrated by Mustangproject XSLT
|
||||
--><rsm:ExchangedDocumentContext>
|
||||
<ram:TestIndicator>
|
||||
<udt:Indicator>true</udt:Indicator>
|
||||
</ram:TestIndicator>
|
||||
<!-- Im Echtbetrieb muss der TestIndicator entweder vollständig entfallen oder auf false stehen. -->
|
||||
<ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
<ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:comfort</ram:ID>
|
||||
</ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
</rsm:ExchangedDocumentContext>
|
||||
<rsm:ExchangedDocument>
|
||||
<ram:ID>471102</ram:ID>
|
||||
<ram:Name>RECHNUNG</ram:Name>
|
||||
<ram:TypeCode>380</ram:TypeCode>
|
||||
<ram:IssueDateTime>
|
||||
<udt:DateTimeString format="102">20130305</udt:DateTimeString>
|
||||
</ram:IssueDateTime>
|
||||
<ram:IncludedNote>
|
||||
<ram:Content>Rechnung gemäß Bestellung vom 01.03.2013.</ram:Content>
|
||||
</ram:IncludedNote>
|
||||
<ram:IncludedNote>
|
||||
<ram:Content>Lieferant GmbH
|
||||
Lieferantenstraße 20
|
||||
80333 München
|
||||
Deutschland
|
||||
Geschäftsführer: Hans Muster
|
||||
Handelsregisternummer: H A 123
|
||||
</ram:Content>
|
||||
<ram:SubjectCode>REG</ram:SubjectCode>
|
||||
</ram:IncludedNote>
|
||||
</rsm:ExchangedDocument>
|
||||
<rsm:SupplyChainTradeTransaction>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>1</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:GlobalID schemeID="0160">4012345001235</ram:GlobalID>
|
||||
<ram:SellerAssignedID>TB100A4</ram:SellerAssignedID>
|
||||
<ram:Name>Trennblätter A4</ram:Name>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
<ram:SpecifiedLineTradeAgreement>
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">9.9000</ram:ChargeAmount>
|
||||
</ram:GrossPriceProductTradePrice>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">9.9000</ram:ChargeAmount>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedLineTradeAgreement>
|
||||
<ram:SpecifiedLineTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="C62">20.0000</ram:BilledQuantity>
|
||||
</ram:SpecifiedLineTradeDelivery>
|
||||
<ram:SpecifiedLineTradeSettlement>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
<ram:LineTotalAmount currencyID="EUR">198.00</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
</ram:SpecifiedLineTradeSettlement>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>2</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:GlobalID schemeID="0160">4000050986428</ram:GlobalID>
|
||||
<ram:SellerAssignedID>ARNR2</ram:SellerAssignedID>
|
||||
<ram:Name>Joghurt Banane</ram:Name>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
<ram:SpecifiedLineTradeAgreement>
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">5.5000</ram:ChargeAmount>
|
||||
</ram:GrossPriceProductTradePrice>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">5.5000</ram:ChargeAmount>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedLineTradeAgreement>
|
||||
<ram:SpecifiedLineTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="C62">50.0000</ram:BilledQuantity>
|
||||
</ram:SpecifiedLineTradeDelivery>
|
||||
<ram:SpecifiedLineTradeSettlement>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>7.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
<ram:LineTotalAmount currencyID="EUR">275.00</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
</ram:SpecifiedLineTradeSettlement>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:ApplicableHeaderTradeAgreement>
|
||||
<ram:SellerTradeParty>
|
||||
<ram:GlobalID schemeID="0088">4000001123452</ram:GlobalID>
|
||||
<ram:Name>Lieferant GmbH</ram:Name>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode>80333</ram:PostcodeCode>
|
||||
<ram:LineOne>Lieferantenstraße 20</ram:LineOne>
|
||||
<ram:CityName>München</ram:CityName>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="FC">201/113/40209</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="VA">DE123456789</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
</ram:SellerTradeParty>
|
||||
<ram:BuyerTradeParty>
|
||||
<ram:ID>GE2020211</ram:ID>
|
||||
<ram:GlobalID schemeID="0088">4000001987658</ram:GlobalID>
|
||||
<ram:Name>Kunden AG Mitte</ram:Name>
|
||||
<ram:DefinedTradeContact>
|
||||
<ram:PersonName>Hans Muster</ram:PersonName>
|
||||
</ram:DefinedTradeContact>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode>69876</ram:PostcodeCode>
|
||||
<ram:LineOne>Kundenstraße 15</ram:LineOne>
|
||||
<ram:CityName>Frankfurt</ram:CityName>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
</ram:BuyerTradeParty>
|
||||
</ram:ApplicableHeaderTradeAgreement>
|
||||
<ram:ApplicableHeaderTradeDelivery>
|
||||
<ram:ActualDeliverySupplyChainEvent>
|
||||
<ram:OccurrenceDateTime>
|
||||
<udt:DateTimeString format="102">20130305</udt:DateTimeString>
|
||||
</ram:OccurrenceDateTime>
|
||||
</ram:ActualDeliverySupplyChainEvent>
|
||||
</ram:ApplicableHeaderTradeDelivery>
|
||||
<ram:ApplicableHeaderTradeSettlement>
|
||||
<ram:PaymentReference>2013-471102</ram:PaymentReference>
|
||||
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
|
||||
<ram:SpecifiedTradeSettlementPaymentMeans>
|
||||
<ram:TypeCode>31</ram:TypeCode>
|
||||
<ram:Information>Überweisung</ram:Information>
|
||||
<ram:PayeePartyCreditorFinancialAccount>
|
||||
<ram:IBANID>DE08700901001234567890</ram:IBANID>
|
||||
</ram:PayeePartyCreditorFinancialAccount>
|
||||
<ram:PayeeSpecifiedCreditorFinancialInstitution>
|
||||
<ram:BICID>GENODEF1M04</ram:BICID>
|
||||
</ram:PayeeSpecifiedCreditorFinancialInstitution>
|
||||
</ram:SpecifiedTradeSettlementPaymentMeans>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:CalculatedAmount currencyID="EUR">19.25</ram:CalculatedAmount>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:BasisAmount currencyID="EUR">275.00</ram:BasisAmount>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>7.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:CalculatedAmount currencyID="EUR">37.62</ram:CalculatedAmount>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:BasisAmount currencyID="EUR">198.00</ram:BasisAmount>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradePaymentTerms>
|
||||
<ram:Description>Zahlbar innerhalb 30 Tagen netto bis 04.04.2013, 3% Skonto innerhalb 10 Tagen bis 15.03.2013</ram:Description>
|
||||
<ram:DueDateDateTime>
|
||||
<udt:DateTimeString format="102">20130404</udt:DateTimeString>
|
||||
</ram:DueDateDateTime>
|
||||
</ram:SpecifiedTradePaymentTerms>
|
||||
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||
<ram:LineTotalAmount currencyID="EUR">473.00</ram:LineTotalAmount>
|
||||
<ram:ChargeTotalAmount currencyID="EUR">0.00</ram:ChargeTotalAmount>
|
||||
<ram:AllowanceTotalAmount currencyID="EUR">0.00</ram:AllowanceTotalAmount>
|
||||
<ram:TaxBasisTotalAmount currencyID="EUR">473.00</ram:TaxBasisTotalAmount>
|
||||
<ram:TaxTotalAmount currencyID="EUR">56.87</ram:TaxTotalAmount>
|
||||
<ram:GrandTotalAmount currencyID="EUR">529.87</ram:GrandTotalAmount>
|
||||
<ram:TotalPrepaidAmount currencyID="EUR">0.00</ram:TotalPrepaidAmount>
|
||||
<ram:DuePayableAmount currencyID="EUR">529.87</ram:DuePayableAmount>
|
||||
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||
</ram:ApplicableHeaderTradeSettlement>
|
||||
</rsm:SupplyChainTradeTransaction>
|
||||
</rsm:CrossIndustryInvoice>
|
||||
BIN
libraryExtended/src/test/resources/invalidXMP.pdf
Normal file
BIN
libraryExtended/src/test/resources/invalidXMP.pdf
Normal file
Binary file not shown.
Binary file not shown.
197
libraryExtended/src/test/resources/validV1.xml
Normal file
197
libraryExtended/src/test/resources/validV1.xml
Normal file
@@ -0,0 +1,197 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<rsm:CrossIndustryDocument xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12" xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0">
|
||||
<rsm:SpecifiedExchangedDocumentContext>
|
||||
<ram:TestIndicator>
|
||||
<udt:Indicator>false</udt:Indicator>
|
||||
</ram:TestIndicator>
|
||||
<ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
<ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:extended</ram:ID>
|
||||
</ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
</rsm:SpecifiedExchangedDocumentContext>
|
||||
<rsm:HeaderExchangedDocument>
|
||||
<ram:ID>RE-20171118/506</ram:ID>
|
||||
<ram:Name>RECHNUNG</ram:Name>
|
||||
<ram:TypeCode>380</ram:TypeCode>
|
||||
<ram:IssueDateTime>
|
||||
<udt:DateTimeString format="102">20171118</udt:DateTimeString>
|
||||
</ram:IssueDateTime>
|
||||
</rsm:HeaderExchangedDocument>
|
||||
<rsm:SpecifiedSupplyChainTradeTransaction>
|
||||
<ram:ApplicableSupplyChainTradeAgreement>
|
||||
<ram:SellerTradeParty>
|
||||
<ram:Name>Bei Spiel GmbH</ram:Name>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode>12345</ram:PostcodeCode>
|
||||
<ram:LineOne>Ecke 12</ram:LineOne>
|
||||
<ram:CityName>Stadthausen</ram:CityName>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="FC">22/815/0815/4</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="VA">DE136695976</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
</ram:SellerTradeParty>
|
||||
<ram:BuyerTradeParty>
|
||||
<ram:Name>Theodor Est</ram:Name>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode>88802</ram:PostcodeCode>
|
||||
<ram:LineOne>Bahnstr. 42</ram:LineOne>
|
||||
<ram:CityName>Spielkreis</ram:CityName>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="VA">DE999999999</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
</ram:BuyerTradeParty>
|
||||
</ram:ApplicableSupplyChainTradeAgreement>
|
||||
<ram:ApplicableSupplyChainTradeDelivery>
|
||||
<ram:ActualDeliverySupplyChainEvent>
|
||||
<ram:OccurrenceDateTime>
|
||||
<udt:DateTimeString format="102">20171117</udt:DateTimeString>
|
||||
</ram:OccurrenceDateTime>
|
||||
</ram:ActualDeliverySupplyChainEvent>
|
||||
</ram:ApplicableSupplyChainTradeDelivery>
|
||||
<ram:ApplicableSupplyChainTradeSettlement>
|
||||
<ram:PaymentReference>RE-20171118/506</ram:PaymentReference>
|
||||
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
|
||||
<ram:SpecifiedTradeSettlementPaymentMeans>
|
||||
<ram:TypeCode>42</ram:TypeCode>
|
||||
<ram:Information>Überweisung</ram:Information>
|
||||
<ram:PayeePartyCreditorFinancialAccount>
|
||||
<ram:IBANID>DE88 2008 0000 0970 3757 00</ram:IBANID>
|
||||
</ram:PayeePartyCreditorFinancialAccount>
|
||||
<ram:PayeeSpecifiedCreditorFinancialInstitution>
|
||||
<ram:BICID>COBADEFFXXX</ram:BICID>
|
||||
<ram:Name>Commerzbank</ram:Name>
|
||||
</ram:PayeeSpecifiedCreditorFinancialInstitution>
|
||||
</ram:SpecifiedTradeSettlementPaymentMeans>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:CalculatedAmount currencyID="EUR">11.20</ram:CalculatedAmount>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:BasisAmount currencyID="EUR">160.00</ram:BasisAmount>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:ApplicablePercent>7.00</ram:ApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:CalculatedAmount currencyID="EUR">63.84</ram:CalculatedAmount>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:BasisAmount currencyID="EUR">336.00</ram:BasisAmount>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:ApplicablePercent>19.00</ram:ApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradePaymentTerms>
|
||||
<ram:Description>Zahlbar ohne Abzug bis zum 09.12.2017</ram:Description>
|
||||
<ram:DueDateDateTime>
|
||||
<udt:DateTimeString format="102">20171209</udt:DateTimeString>
|
||||
</ram:DueDateDateTime>
|
||||
</ram:SpecifiedTradePaymentTerms>
|
||||
<ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
<ram:LineTotalAmount currencyID="EUR">496.00</ram:LineTotalAmount>
|
||||
<ram:ChargeTotalAmount currencyID="EUR">0.00</ram:ChargeTotalAmount>
|
||||
<ram:AllowanceTotalAmount currencyID="EUR">0.00</ram:AllowanceTotalAmount>
|
||||
<ram:TaxBasisTotalAmount currencyID="EUR">496.00</ram:TaxBasisTotalAmount>
|
||||
<ram:TaxTotalAmount currencyID="EUR">75.04</ram:TaxTotalAmount>
|
||||
<ram:GrandTotalAmount currencyID="EUR">571.04</ram:GrandTotalAmount>
|
||||
<ram:DuePayableAmount currencyID="EUR">571.04</ram:DuePayableAmount>
|
||||
</ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
</ram:ApplicableSupplyChainTradeSettlement>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>1</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedSupplyChainTradeAgreement>
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">160.0000</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="HUR">1.0000</ram:BasisQuantity>
|
||||
</ram:GrossPriceProductTradePrice>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">160.0000</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="HUR">1.0000</ram:BasisQuantity>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedSupplyChainTradeAgreement>
|
||||
<ram:SpecifiedSupplyChainTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="HUR">1.0000</ram:BilledQuantity>
|
||||
</ram:SpecifiedSupplyChainTradeDelivery>
|
||||
<ram:SpecifiedSupplyChainTradeSettlement>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:ApplicablePercent>7.00</ram:ApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
<ram:LineTotalAmount currencyID="EUR">160.00</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
</ram:SpecifiedSupplyChainTradeSettlement>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:Name>Künstlerische Gestaltung (Stunde): Einer Beispielrechnung</ram:Name>
|
||||
<ram:Description></ram:Description>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>2</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedSupplyChainTradeAgreement>
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">0.7900</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="C62">1.0000</ram:BasisQuantity>
|
||||
</ram:GrossPriceProductTradePrice>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">0.7900</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="C62">1.0000</ram:BasisQuantity>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedSupplyChainTradeAgreement>
|
||||
<ram:SpecifiedSupplyChainTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="C62">400.0000</ram:BilledQuantity>
|
||||
</ram:SpecifiedSupplyChainTradeDelivery>
|
||||
<ram:SpecifiedSupplyChainTradeSettlement>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:ApplicablePercent>19.00</ram:ApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
<ram:LineTotalAmount currencyID="EUR">316.00</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
</ram:SpecifiedSupplyChainTradeSettlement>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:Name>Luftballon: Bunt, ca. 500ml</ram:Name>
|
||||
<ram:Description></ram:Description>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>3</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedSupplyChainTradeAgreement>
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">0.1000</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="LTR">1.0000</ram:BasisQuantity>
|
||||
</ram:GrossPriceProductTradePrice>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount currencyID="EUR">0.1000</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="LTR">1.0000</ram:BasisQuantity>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedSupplyChainTradeAgreement>
|
||||
<ram:SpecifiedSupplyChainTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="LTR">200.0000</ram:BilledQuantity>
|
||||
</ram:SpecifiedSupplyChainTradeDelivery>
|
||||
<ram:SpecifiedSupplyChainTradeSettlement>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:ApplicablePercent>19.00</ram:ApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
<ram:LineTotalAmount currencyID="EUR">20.00</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementMonetarySummation>
|
||||
</ram:SpecifiedSupplyChainTradeSettlement>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:Name>Heiße Luft pro Liter</ram:Name>
|
||||
<ram:Description></ram:Description>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
</rsm:SpecifiedSupplyChainTradeTransaction>
|
||||
</rsm:CrossIndustryDocument>
|
||||
BIN
libraryExtended/src/test/resources/validV1WithAdditionalData.pdf
Normal file
BIN
libraryExtended/src/test/resources/validV1WithAdditionalData.pdf
Normal file
Binary file not shown.
186
libraryExtended/src/test/resources/validV2.xml
Normal file
186
libraryExtended/src/test/resources/validV2.xml
Normal file
@@ -0,0 +1,186 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<rsm:CrossIndustryInvoice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">
|
||||
<rsm:ExchangedDocumentContext>
|
||||
<ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
<ram:ID>urn:cen.eu:en16931:2017:compliant:factur-x.eu:1p0:en16931</ram:ID>
|
||||
</ram:GuidelineSpecifiedDocumentContextParameter>
|
||||
</rsm:ExchangedDocumentContext>
|
||||
<rsm:ExchangedDocument>
|
||||
<ram:ID>RE-20171118/506</ram:ID>
|
||||
<ram:TypeCode>380</ram:TypeCode>
|
||||
<ram:IssueDateTime><udt:DateTimeString format="102">20171118</udt:DateTimeString></ram:IssueDateTime>
|
||||
</rsm:ExchangedDocument>
|
||||
<rsm:SupplyChainTradeTransaction>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>1</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:Name>Künstlerische Gestaltung (Stunde): Einer Beispielrechnung</ram:Name>
|
||||
<ram:Description></ram:Description>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
<ram:SpecifiedLineTradeAgreement>
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
<ram:ChargeAmount>160.0000</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="HUR">1.0000</ram:BasisQuantity>
|
||||
</ram:GrossPriceProductTradePrice>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount>160.0000</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="HUR">1.0000</ram:BasisQuantity>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedLineTradeAgreement>
|
||||
<ram:SpecifiedLineTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="HUR">1.0000</ram:BilledQuantity>
|
||||
</ram:SpecifiedLineTradeDelivery>
|
||||
<ram:SpecifiedLineTradeSettlement>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>7.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
<ram:LineTotalAmount>160.00</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
</ram:SpecifiedLineTradeSettlement>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>2</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:Name>Luftballon: Bunt, ca. 500ml</ram:Name>
|
||||
<ram:Description></ram:Description>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
<ram:SpecifiedLineTradeAgreement>
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
<ram:ChargeAmount>0.7900</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="C62">1.0000</ram:BasisQuantity>
|
||||
</ram:GrossPriceProductTradePrice>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount>0.7900</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="C62">1.0000</ram:BasisQuantity>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedLineTradeAgreement>
|
||||
<ram:SpecifiedLineTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="C62">400.0000</ram:BilledQuantity>
|
||||
</ram:SpecifiedLineTradeDelivery>
|
||||
<ram:SpecifiedLineTradeSettlement>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
<ram:LineTotalAmount>316.00</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
</ram:SpecifiedLineTradeSettlement>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:AssociatedDocumentLineDocument>
|
||||
<ram:LineID>3</ram:LineID>
|
||||
</ram:AssociatedDocumentLineDocument>
|
||||
<ram:SpecifiedTradeProduct>
|
||||
<ram:Name>Heiße Luft pro Liter</ram:Name>
|
||||
<ram:Description></ram:Description>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
<ram:SpecifiedLineTradeAgreement>
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
<ram:ChargeAmount>0.1000</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="LTR">1.0000</ram:BasisQuantity>
|
||||
</ram:GrossPriceProductTradePrice>
|
||||
<ram:NetPriceProductTradePrice>
|
||||
<ram:ChargeAmount>0.1000</ram:ChargeAmount>
|
||||
<ram:BasisQuantity unitCode="LTR">1.0000</ram:BasisQuantity>
|
||||
</ram:NetPriceProductTradePrice>
|
||||
</ram:SpecifiedLineTradeAgreement>
|
||||
<ram:SpecifiedLineTradeDelivery>
|
||||
<ram:BilledQuantity unitCode="LTR">200.0000</ram:BilledQuantity>
|
||||
</ram:SpecifiedLineTradeDelivery>
|
||||
<ram:SpecifiedLineTradeSettlement>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
<ram:LineTotalAmount>20.00</ram:LineTotalAmount>
|
||||
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||
</ram:SpecifiedLineTradeSettlement>
|
||||
</ram:IncludedSupplyChainTradeLineItem>
|
||||
<ram:ApplicableHeaderTradeAgreement>
|
||||
<ram:SellerTradeParty>
|
||||
<ram:Name>Bei Spiel GmbH</ram:Name>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode>12345</ram:PostcodeCode>
|
||||
<ram:LineOne>Ecke 12</ram:LineOne>
|
||||
<ram:CityName>Stadthausen</ram:CityName>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="FC">22/815/0815/4</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="VA">DE136695976</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
</ram:SellerTradeParty>
|
||||
<ram:BuyerTradeParty>
|
||||
<ram:Name>Theodor Est</ram:Name>
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode>88802</ram:PostcodeCode>
|
||||
<ram:LineOne>Bahnstr. 42</ram:LineOne>
|
||||
<ram:CityName>Spielkreis</ram:CityName>
|
||||
<ram:CountryID>DE</ram:CountryID>
|
||||
</ram:PostalTradeAddress>
|
||||
<ram:SpecifiedTaxRegistration>
|
||||
<ram:ID schemeID="VA">DE999999999</ram:ID>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
</ram:BuyerTradeParty>
|
||||
</ram:ApplicableHeaderTradeAgreement>
|
||||
<ram:ApplicableHeaderTradeDelivery>
|
||||
<ram:ActualDeliverySupplyChainEvent>
|
||||
<ram:OccurrenceDateTime><udt:DateTimeString format="102">20171117</udt:DateTimeString></ram:OccurrenceDateTime>
|
||||
</ram:ActualDeliverySupplyChainEvent>
|
||||
</ram:ApplicableHeaderTradeDelivery>
|
||||
<ram:ApplicableHeaderTradeSettlement>
|
||||
<ram:PaymentReference>RE-20171118/506</ram:PaymentReference>
|
||||
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
|
||||
<ram:SpecifiedTradeSettlementPaymentMeans>
|
||||
<ram:TypeCode>42</ram:TypeCode>
|
||||
<ram:Information>Überweisung</ram:Information>
|
||||
<ram:PayeePartyCreditorFinancialAccount>
|
||||
<ram:IBANID>DE88 2008 0000 0970 3757 00</ram:IBANID>
|
||||
</ram:PayeePartyCreditorFinancialAccount>
|
||||
<ram:PayeeSpecifiedCreditorFinancialInstitution>
|
||||
<ram:BICID>COBADEFFXXX</ram:BICID>
|
||||
</ram:PayeeSpecifiedCreditorFinancialInstitution>
|
||||
</ram:SpecifiedTradeSettlementPaymentMeans>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:CalculatedAmount>11.20</ram:CalculatedAmount>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:BasisAmount>160.00</ram:BasisAmount>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>7.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:ApplicableTradeTax>
|
||||
<ram:CalculatedAmount>63.84</ram:CalculatedAmount>
|
||||
<ram:TypeCode>VAT</ram:TypeCode>
|
||||
<ram:BasisAmount>336.00</ram:BasisAmount>
|
||||
<ram:CategoryCode>S</ram:CategoryCode>
|
||||
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
|
||||
</ram:ApplicableTradeTax>
|
||||
<ram:SpecifiedTradePaymentTerms>
|
||||
<ram:Description>Zahlbar ohne Abzug bis 09.12.2017</ram:Description>
|
||||
<ram:DueDateDateTime><udt:DateTimeString format="102">20171209</udt:DateTimeString></ram:DueDateDateTime>
|
||||
</ram:SpecifiedTradePaymentTerms>
|
||||
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||
<ram:LineTotalAmount>496.00</ram:LineTotalAmount>
|
||||
<ram:ChargeTotalAmount>0.00</ram:ChargeTotalAmount>
|
||||
<ram:AllowanceTotalAmount>0.00</ram:AllowanceTotalAmount>
|
||||
<ram:TaxBasisTotalAmount>496.00</ram:TaxBasisTotalAmount>
|
||||
<ram:TaxTotalAmount currencyID="EUR">75.04</ram:TaxTotalAmount>
|
||||
<ram:GrandTotalAmount>571.04</ram:GrandTotalAmount>
|
||||
<ram:DuePayableAmount>571.04</ram:DuePayableAmount>
|
||||
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||
</ram:ApplicableHeaderTradeSettlement>
|
||||
</rsm:SupplyChainTradeTransaction>
|
||||
</rsm:CrossIndustryInvoice>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user