XML Dateien importieren andere XML Dateien
Andreas Riedel
- xml
Hallo Forum.
Ich hatte eigentlich gehofft, die Lösung schnell zu finden, jetzt Suche ich aber schon seit 1/2 Tag rum. Deshalb jetzt lieber die Frage in Forum, in der Hoffnung auf Hilfe.
Folgendes Problem:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<tableName name="ORGU_PRGP_LINK" />
<className name="Opgl" />
<packageName name="de.jdi.jdbc.directaccess" />
<since value="18.12.2003 16:02" />
<columns>
<column attributeName="orguId" columnName="ORGU_ID" methodName="OrguId" type="PrimaryKey" />
<column attributeName="prgpId" columnName="PRGP_ID" methodName="PrgpId" type="PrimaryKey" />
...
</columns>
<!-- Nicht generierter Teil. Start -->
<insert>
<stmt>INSERT INTO ORGU_PRGP_LINK(</stmt>
<stmt>PRGP_ID, </stmt>
<stmt>ORGU_ID, </stmt>
<stmt>OGPL_PRICE_UPD_CTL, </stmt>
<stmt>LCOUNT</stmt>
<stmt>)VALUES(?,?,?,?)</stmt>
</insert>
<!-- Nicht generierter Teil. Ende -->
</root>
Meine Hoffnung ist, den unteren Teil in eine andere Datei auszugliedern, nach dem Motto:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<tableName name="ORGU_PRGP_LINK" />
<className name="Opgl" />
<packageName name="de.jdi.jdbc.directaccess" />
<since value="18.12.2003 16:02" />
<columns>
<column attributeName="orguId" columnName="ORGU_ID" methodName="OrguId" type="PrimaryKey" />
<column attributeName="prgpId" columnName="PRGP_ID" methodName="PrgpId" type="PrimaryKey" />
...
</columns>
<!-- Nicht generierter Teil. Start -->
<import href="XYZAddOns.xsl"/>
<!-- Nicht generierter Teil. Ende -->
</root>
Wobei XYZAddOns.xml =
<insert>
<stmt>INSERT INTO ORGU_PRGP_LINK(</stmt>
<stmt>PRGP_ID, </stmt>
<stmt>ORGU_ID, </stmt>
<stmt>OGPL_PRICE_UPD_CTL, </stmt>
<stmt>LCOUNT</stmt>
<stmt>)VALUES(?,?,?,?)</stmt>
</insert>
Hat irgendeiner einen Rat??
Danke
Andreas Riedel
Hallo Andreas,
Folgendes Problem:
Für den Datenzugriff benötige ich jetzt zusätzliche Daten in der XML Datei, die nicht generiert werden können. Bei ersten Versuch habe ich die XML Datei um die zusätzlichen Attribute ergänzt. Lief toll. Nur leider wurde beim nächsten Generieren alles übergebügelt. Javaseitig könnte man das Problem umgehen, ...
Javaseitig könntest du deine Klassen etc. erweitern in dem du eine "generations pipeline" erstellst. D.h. in einer Kontrolldatei (*.properties, oder was auch immer) definierts du was alles dein End-XML behalten soll, dann wird diese Datei ausgelesen und dein Programm holt die Teile und generiert daraus dein End-XML.
XML-Seiteig könntest du es nur machen, wenn du deine zweite XML als externe Entity in einer DTD definierst und dann diese im (ersten) XML aufrufst. Dabei muss du allerdings einen XML-Parser haben, der die DTD lesen und die entities auflösen kann.
XSL-Seitig (könnte das einfachste für dich sein)
Du kannst aus deinem XSL-Sheet heraus durch die document() Funktion auf externe XML-Dateien zugreifen und dann diese in die Transformation einbeziehen.
Grüße
Thomas