Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   ZUGFerD und XML Bearbeitung mit dem Delphi XML Data Binding - Namespace Probleme (https://www.delphipraxis.net/216222-zugferd-und-xml-bearbeitung-mit-dem-delphi-xml-data-binding-namespace-probleme.html)

motion 22. Nov 2024 19:39

ZUGFerD und XML Bearbeitung mit dem Delphi XML Data Binding - Namespace Probleme
 
Ja, ich arbeite mich auch durch die ERechnung Anforderung durch.

Ich bin eigentlich schon rechts weit und wie folgt vorgegangen:
-aktuelle XML Definition von www.ferd-net.de/ZUGFeRD-Download herunter geladen und eines der Profile ausgewählt.
-mit dem in Delphi enthaltenen "XML Data Binding" diese xsd Datei(en) importiert und mir einer Unit erstellen lassen
-damit kann mal sehr komfortabel die XML Datei erstellen lassen

ABER:
Die Namespaces fehlen komplett! Das XML Data Binding erzeugt da gar nichts und das ist wohl auch ein Bug der schon seit Delphi 7 Zeiten nicht behoben ist. Bei komplexen xsd Dateien und include von verschiedenen xsd Dateien kommt das Tool nicht klar.

Dann habe ich noch mal einen Angang mit einem alternativen XML Data Binding gemacht (hier sollen die Namespace Probleme nicht auftreten):
https://git.x2software.net/GitHub-Mi...xmldatabinding
Der erzeugt auch eine schöne Unit mit der sich die XML Datei ähnlich einfach erstellen läßt.
Namespaces sind drin, aber verkehrt (URIs statt namespaces; und das Format in der Node sieht anders aus).

Hat da jemand eine Lösung oder Idee?

Hier eine ZUGFerD Mustervorlage, wie die XML Datei aussehen sollte; aus einer Muster XML Datei nur mal den Anfang rausgeschnitten und wir konzentrieren uns auf die Darstellung des Feldes ram:ID (letzte Zeile):
Code:
<?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>R-00011</ram:ID>
jetzt ein erzeugter Code mit dem Delphi XML Data Binding; es fehlen Namespace-Anfangen in den Nodes:
Code:
<CrossIndustryInvoice xmlns="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" 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:10" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">
  <ExchangedDocumentContext>
    <GuidelineSpecifiedDocumentContextParameter>
      <ID>urn:factur-x.eu:1p0:basicwl</ID>
    </GuidelineSpecifiedDocumentContextParameter>
  </ExchangedDocumentContext>
  <ExchangedDocument>
    <ID>12450011</ID>
und zuletzt der erzeugte Code mit dem alternativen XML Data binding; da sind Namespaces drin, aber die URI und nicht die kurzen Namespaces, außerdem im Format nicht passend:
Code:
<rsm:CrossIndustryInvoice 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:10" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">
  <rsm:ExchangedDocumentContext>
    <GuidelineSpecifiedDocumentContextParameter xmlns="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100">
      <ID>urn:factur-x.eu:1p0:basicwl</ID>
    </GuidelineSpecifiedDocumentContextParameter>
  </rsm:ExchangedDocumentContext>
  <rsm:ExchangedDocument>
    <ID xmlns="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100">12450011</ID>

motion 23. Nov 2024 09:29

AW: ZUGFerD und XML Bearbeitung mit dem Delphi XML Data Binding - Namespace Probleme
 
Eine neue Erkenntnis:
Quba lädt ohne Beschwerden die XML Datei im Format des X2XML Data Bindings (die untere Alternative).
Dort sind die Namespaces eben voll qualifiziert (immer lange URI) und nicht wie gewünscht die Kürzel des Namespaces.
Ist das XML syntaktisch auch in Ordnung? Vielleicht ist das so, hat mich aber überrascht, das es funktioniert.

Ich weiterhin eine Lösung das mit den Namespaces sauber erledigen zu können.

Aber ich werde meinen Zugferd Prototypen soweit voran bringen, das ich eine erzeugte XML das mal mit einem Validator testen kann. Mal sehen was die zu dem Namespace sagen.

motion 3. Jan 2025 00:02

AW: ZUGFerD und XML Bearbeitung mit dem Delphi XML Data Binding - Namespace Probleme
 
Zur Info: Ich habe die Versuche mit den Data-Binding Versionen aufgegeben.
Ich mache jetzt mit den Delphi Units "wpxorder" gute Fortschritte!
Die ersten vom Validator fehlerfrei akzeptierten XML Dateien sind erstellt.

HSimon 12. Jan 2025 09:14

AW: ZUGFerD und XML Bearbeitung mit dem Delphi XML Data Binding - Namespace Probleme
 
Danke für den Hinweis auf den alternativen XML Data Binding Umsetzer.

Die Ausgabe des XMLs muss man aber leider selbst erledigen, damit die Namespaces mit den korrekten Abkürzungen drin stehen.

Falls das noch jemand braucht, hier die umgesetzen Units und der Handling Funktionen.

github HaraldSimon/Invoice


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz