Datenverbindung an XML-Schema dynamisch anpassbar?

Grundsätzliche Themen zur Bedienung, Erstellung von Formularen, Datenbankanbindung und Beispiele ...
Antworten
gzah
Beiträge: 25
Registriert: 17.07.2012, 12:48

Datenverbindung an XML-Schema dynamisch anpassbar?

Beitrag von gzah » 21.10.2013, 16:52

Hallo zusammen,

In einem Formular gibt es 4 Spalten. Zuerst wird die erste Spalte auf deutsch erfasst. Danach die anderen Spalten in Französisch, Italienisch und Englisch.

Wenn alles ausgefüllt ist, werden die Daten per XML-Schema Bindung exportiert und in einem Java Programm weiter verarbeitet. Funktioniert wunderbar.

Nun zu meiner Frage:
Kann man die Datenverbindung per javascript dynamisch so steuern, dass z.B. nur die Daten für französisch importiert werden und die anderen Felder unbeeinflusst bleiben.
Dann könnten nämlich alle Übersetzer gleichzeitig arbeiten und ich könnte die Sprachen mit 3 Schaltflächen per XML-import einzeln importieren.

Kann man per script steuern, welche Felder importiert/exportiert werden sollen..?

Vielen Dank für eure Hilfe

Gruss gzah

Benutzeravatar
radzmar
Beiträge: 961
Registriert: 26.10.2011, 10:18

Datenverbindung an XML-Schema dynamisch anpassbar?

Beitrag von radzmar » 21.10.2013, 20:02

Die Datenbindung selbst lässt sich nicht zur Laufzeit ändern, aber die zu exportierenden Daten schon.
Die Daten liegen unter xfa.datasets.data (data DOM) und sind jederzeit änderbar, müssen also nicht einmal die Daten wiederspiegeln, die im Formular angezeigt werden.

Man kann auch mehrere XML-Dateien hintereinander importieren.
Wenn man dazu die Import-Funktion in Acrobat nutzt, hat das aber die Tücke, das diese Funktion alles unter xfa.datasets.data löscht und mit dem Inhalt der XML-Datei ersetzt.
Damit die bestehenden Daten erhalten bleiben, muss man sie vorher auslagern und später wieder zurückschreiben.
Dafür kann man sich z.B. einen neuen Knoten und xfa.datasets anlegen.
Alles möglich, aber kein Kinderspiel, daher hier auch kein Beispiel.

Bei Interesse bei mir melden.

gzah
Beiträge: 25
Registriert: 17.07.2012, 12:48

Datenverbindung an XML-Schema dynamisch anpassbar?

Beitrag von gzah » 22.10.2013, 19:36

Danke für die Infos! :cool::cool::cool:

Ich schau mir das mal in Ruhe an.

Ist jedenfalls genau das was ich möchte.

gruss gzah


gzah
Beiträge: 25
Registriert: 17.07.2012, 12:48

Datenverbindung an XML-Schema dynamisch anpassbar?

Beitrag von gzah » 28.10.2013, 17:50

habs endlich geschafft...

Beim Import werden bereits vorhandene Daten NICHT mehr überschrieben.

Schön wäre wenn importdata() parametrierbar wäre mit einem "overwrite" Parameter. Leider weit gefehlt!

hier findet ihr nützliche Links. Musste jedoch noch einiges anpassen damits dann auch für mein Formular wie gewünscht funktionierte. Trotzdem sehr hilfreich.
gruss gzah


Benutzeravatar
radzmar
Beiträge: 961
Registriert: 26.10.2011, 10:18

Datenverbindung an XML-Schema dynamisch anpassbar?

Beitrag von radzmar » 28.10.2013, 19:19

Sehr schön, genau die Richtung habe ich gemeint.
Ist natürlich nicht ganz ohne, das zu Laufen zu bringen! Aber toll, dass Du dich selbst reingefuchst hast ;-)

Das Beispiel von John Brinkman ist augenscheinlich etwas limitiert, da es nur den Import von 2 verschiedenen Datensätze betrachtet.
Aber tatsächlich ist es (meines Wissens nach) das einzige Beispiel, dass aufzeigt, dass Daten nicht unbedingt unter xfa.datasets.data liegen müssen, nur weil das sonst so üblich ist. Das Data DOM ist halt jederzeit manipulierbar!
Auf dieser Grundlage habe ich mir z.B. auch eine Lösung erstellt, mit der man beliebig viele XML-Dateien in ein Formular importieren kann.

gzah
Beiträge: 25
Registriert: 17.07.2012, 12:48

Datenverbindung an XML-Schema dynamisch anpassbar?

Beitrag von gzah » 31.10.2013, 17:51

So, jetzt funktioniert endlich alles "fast" genau so wie es soll.

Sind Daten einer Sprache vorhanden, so werden keine neuen Daten zu dieser Sprache importiert.
Man kann alle Sprachen einzeln importieren oder auch gleich alle zusammen.

ABER ein kleines Problem habe ich noch: Die leeren nodes müssen weg !!!
  • wenn ich in einem Textfeld Daten erfasse, so erscheinen die Daten unter "xfa.datasets.data" auch gleich. Alles bestens.
  • wenn ich jedoch den Text eines zuvor ausgefüllten Feldes lösche, so sind zwar die Daten auch gelöscht, ABER die nodes unter "xfa.datasets.data" bleiben !!!

hier ein kleines Beispiel zu leeren nodes unter "xfa.datasets.data":

Code: Alles auswählen

<deutsch>
  <titel/>
  <einleitung/>
</deutsch>
Da beide nodes (titel, einleitung) leer sind, müsste ich in diesem Fall den kompletten node "deutsch" aus folgenden Günden löschen:
  • weil die Sprache deutsch sonst nicht mehr importiert werden kann weil der Knoten <deutsch> vorhanden ist und die leeren Daten die importierten wieder überschreiben würden.
  • das xml file wird unnötig länger und somit unübersichtlicher (debugging)

Muss ich das von Hand machen oder gibt es dazu einen Befehl welcher alle leeren nodes automatisch löscht ?

Vielen Dank für eure Hilfe!

gzah
Beiträge: 25
Registriert: 17.07.2012, 12:48

Datenverbindung an XML-Schema dynamisch anpassbar?

Beitrag von gzah » 01.11.2013, 16:32

habe im Designer unter "XML Quelle" innerhalb von <config> ... </config> versucht folgende Konfiguration zu ergänzen:

Code: Alles auswählen

<acrobat>
  <common>
    <data>
      <transform ref="">
        <ifEmpty>ignore</ifEmpty>
      </transform>
    </data>
  </common>
</acrobat>
Theoretisch sollten somit alle leeren nodes rekursiv gelöscht werden (siehe Seite 525).
Hab wohl was falsch gemacht. Es funktioniert leider nicht...

In folgendem Dokument findet man auf Seite 525 und ab 888 die notwendigen Informationen zu <ifEmpty> und allgemein zum "Configuration DOM":
Die Daten sind per XML Schema gebunden.

Kann mir jemand sagen was ich falsch mache..?


gzah
Beiträge: 25
Registriert: 17.07.2012, 12:48

Datenverbindung an XML-Schema dynamisch anpassbar?

Beitrag von gzah » 07.11.2013, 15:59

DIE LEEREN NODES WERDEN ENDLICH GELÖSCHT !!!!!  :cool::cool::cool:

DOM-Konfiguration:
  • die oben erwähnte DOM-Konfiguration <config> funktioniert NICHT !!! Weshalb weiss ich nicht.
    Um die Problematik mit den leeren nodes zu lösen braucht es keine Anpassung der DOM-Konfiguration.
    Falls jemand mit dem "Configuration DOM" bereits Erfahrungen hat, wäre es trotzdem interessant mehr darüber zu erfahren...

Damit man keine leeren nodes unter "xfa.datasets.data" hat, muss man folgendes beachten:
  • Leider funktioniert es NICHT für Textfelder mit dem Feldformat "Rich Text".
[indent]
  • Wenn man Richtextfelder zuerst mit Text füllt und dann später wieder ins Feld klickt und den Text löscht, bleiben die leeren nodes unter "xfa.datasets.data".

    Dieses Problem kann man mit folgendem Script im "exit-event" sehr einfach lösen:

    Code: Alles auswählen

    if (this.rawValue == "")
    {
       this.rawValue = null; 
    }
[/indent]

Antworten