diff --git a/History.md b/History.md
index 2fb08d92..495bfbc5 100644
--- a/History.md
+++ b/History.md
@@ -16,6 +16,8 @@
- #465 cli version should also be able to combine PDF/A-3 source
- #487 update to zugferd 2.3.0
- #472 Fix logging implementation missing in CLI
+- #479 Re-Formatted and re-organized POMs - Part 2
+
2.13.0
=======
diff --git a/README.md b/README.md
index f1af0fa7..f41a4671 100644
--- a/README.md
+++ b/README.md
@@ -34,14 +34,11 @@ If you set up a Maven project, you can reference the mustang artifact like this:
org.mustangproject
library
- 2.12.0
+ 2.14.0
```
Further docs on how to develop **with** mustang:
-
- - [ZugferdDev.en.pdf](https://github.com/ZUGFeRD/mustangproject/blob/master/doc/ZugferdDev.en.pdf?raw=true): The English mustang user documentation.
- - [ZugferdDev.de.pdf](https://github.com/ZUGFeRD/mustangproject/blob/master/doc/ZugferdDev.de.pdf?raw=true): The German mustang user documentation.
- [Usage examples](https://www.mustangproject.org/use/): Read and write electronic invoices.
- [Mustang classes](https://www.mustangproject.org/invoice-class/): Using the mustang classes.
diff --git a/Release_Notes.md b/Release_Notes.md
index a9e85139..11b0040c 100644
--- a/Release_Notes.md
+++ b/Release_Notes.md
@@ -20,13 +20,13 @@ Additionally, the Mustang validator now also supports XRechnung 2, can now also
### Use on command line
-`java -jar Mustang-CLI-2.0.0-alpha3.jar --action=combine` embeds a XML into a PDF (A-1) file and exports as PDF/A-3
+`java -jar Mustang-CLI-2.14.0.jar --action=combine` embeds a XML into a PDF (A-1) file and exports as PDF/A-3
-`java -jar mustang-cli.jar --action=extract` extracts XML from a ZUGFeRD file and
+`java -jar Mustang-CLI-2.14.0.jar --action=extract` extracts XML from a ZUGFeRD file and
-`java -jar mustang-cli.jar --action=validate` validates XML or PDF files.
+`java -jar Mustang-CLI-2.14.0.jar --action=validate` validates XML or PDF files.
-`java -jar mustang-cli.jar --help` still outputs the parameters which can be used
+`java -jar Mustang-CLI-2.14.0.jar --help` still outputs the parameters which can be used
to for non-interactive (i.e., batch) processing.
@@ -37,12 +37,13 @@ from `-f` (ZUV) to the usual `--source`.
We're now on maven central, please remove the old github repository. Additionally, the following changed
-| What | old value | new value |
-|---|---|---|
-| Group id | org.mustangproject.zugferd | org.mustangproject|
-| Artifact ID | mustang | library |
-| Version | 1.7.8 | 2.0.0-alpha3 |
+| What | old value | new value |
+|---|---|--------------------|
+| Group id | org.mustangproject.zugferd | org.mustangproject |
+| Artifact ID | mustang | library |
+| Version | 1.7.8 | 2.14.0 |
+And please use the shaded classifier.
If you want you can also embed the validator in your software using validator
as artifact ID. "validator" includes the library functionality but is >20 MB
bigger due to its dependencies.
@@ -200,7 +201,7 @@ read/write ZUGFeRD-invoices like the (smaller) library module.
org.mustangproject
validator
- 2.0.0
+ 2.14.0
diff --git a/doc/development_documentation.md b/doc/development_documentation.md
index 5bcff291..dbdc8ed4 100644
--- a/doc/development_documentation.md
+++ b/doc/development_documentation.md
@@ -59,7 +59,7 @@ to validate the XML part of the invoices.
## New build
-Target platform is java 1.11
+Target platform is java 1.17
## Build
@@ -229,3 +229,47 @@ extract, rename xsl file to xslt, move to new version dir and add a if where the
* freshcode.club
* Submit on openpr.de/.com, https://www.einpresswire.com/
+## Tips&Inspriration
+
+
+NodeList from a XPath https://github.com/ZUGFeRD/mustangproject/pull/476/files
+```
+ xpr = xpath.compile("//*[local-name()=\"PrepaidAmount\"]");
+ NodeList prepaidNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
+ nodeMap.getNode("GlobalID").ifPresent(idNode -> {
+ if (idNode.hasAttributes()
+ && idNode.getAttributes().getNamedItem("schemeID") != null) {
+ globalId = new SchemedID()
+ .setScheme(idNode.getAttributes().getNamedItem("schemeID").getNodeValue())
+ .setId(idNode.getTextContent());
+ }
+ });
+```
+
+nodeMap.getAsNodeMap and nodeMap.getAsString
+```
+
+ nodeMap.getAsString("SellerAssignedID").ifPresent(this::setSellerAssignedID);
+ nodeMap.getAsString("BuyerAssignedID").ifPresent(this::setBuyerAssignedID);
+ nodeMap.getAsString("Name").ifPresent(this::setName);
+ nodeMap.getAsString("Description").ifPresent(this::setDescription);
+
+ nodeMap.getAsNodeMap("ApplicableProductCharacteristic").ifPresent(apcNodes -> {
+ String key = apcNodes.getAsStringOrNull("Description");
+ String value = apcNodes.getAsStringOrNull("Value");
+ if (key != null && value != null) {
+ if (attributes == null) {
+ attributes = new HashMap<>();
+ }
+ attributes.put(key, value);
+ }
+ });
+
+ nodeMap.getAsNodeMap("DesignatedProductClassification").ifPresent(dpcNodes -> {
+ String className = dpcNodes.getAsStringOrNull("ClassName");
+ dpcNodes.getNode("ClassCode").map(ClassCode::fromNode).ifPresent(classCode ->
+ classifications.add(new DesignatedProductClassification(classCode, className)));
+ });
+
+ nodeMap.getAsString("OriginTradeCounty").ifPresent(this::setCountryOfOrigin);
+```