Autor Thema: XML Datei generieren  (Gelesen 17001 mal)

Offline Hevelmann

  • Frischling
  • *
  • Beiträge: 43
  • Geschlecht: Männlich
Re:XML Datei generieren
« Antwort #20 am: 04.09.03 - 18:27:17 »
@ Don Pasquale

So hier ein Anfang der funktionieren müsste:


<?xml version="1.0"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dxl="http://www.lotus.com/dxl" exclude-result-prefixes="dxl">
   <xsl:output method="xml" indent="yes" encoding="UTF-8" omit-xml-declaration="no" version="1.0"/>

   <xsl:template match="/">
      <xsl:apply-templates select="dxl:document"/>
   </xsl:template>

   <xsl:template match="dxl:document">
      <MAIL>
         <COLUMN>
            <xsl:call-template name="GetValue"/>
            <TYPE>String</TYPE>
         </COLUMN>
      </MAIL>
   </xsl:template>

   <xsl:template name="GetValue">
      <xsl:for-each select="dxl:item">
         <xsl:choose>
            <xsl:when test="@name='From'">
               <item>
                  <xsl:attribute name="name">Absender</xsl:attribute>
                  <value>
                     <xsl:value-of select="."/>
                  </value>
               </item>
            </xsl:when>
         </xsl:choose>

         <xsl:choose>
            <xsl:when test="@name='Subject'">
               <item>
                  <xsl:attribute name="name">Titel</xsl:attribute>
                  <value>
                     <xsl:value-of select="."/>
                  </value>
               </item>
            </xsl:when>
         </xsl:choose>
         
         <xsl:choose>
            <xsl:when test="@name='Body'">
               <item>
                  <xsl:attribute name="name">Body</xsl:attribute>
                  <Value>
                     <xsl:for-each select="dxl:richtext/descendant::*">
                        <xsl:choose>
                           <xsl:when test="text()">
                              <xsl:choose>
                                 <xsl:when test="name()='formula'"></xsl:when>
                                 <xsl:when test="name()='notesbitmap'"></xsl:when>
                                 <xsl:otherwise><xsl:value-of select="text()"/></xsl:otherwise>
                              </xsl:choose>
                           </xsl:when>
                        </xsl:choose>
                     </xsl:for-each>
                  </Value>
               </item>
            </xsl:when>
         </xsl:choose>

         <xsl:choose>
            <xsl:when test="@name='SendTo'">
               <item>
                  <xsl:attribute name="name">Emfpänger</xsl:attribute>
                  <xsl:for-each select="dxl:textlist/dxl:text">
                     <xsl:choose>
                        <xsl:when test="following-sibling::*">
                           <Value>
                              <xsl:value-of select="text()"/>
                           </Value>
                        </xsl:when>
                        <xsl:when test="self::*">
                           <Value>
                              <xsl:value-of select="text()"/>
                           </Value>
                        </xsl:when>
                     </xsl:choose>
                  </xsl:for-each>
               </item>
            </xsl:when>
         </xsl:choose>

      </xsl:for-each>   
   </xsl:template>
</xsl:transform>



Die Sache mit den Attachment Namen funktioniert noch nicht, aber ich bleib am Ball

Gruss Hevelmann

Offline CourtJester

  • Frischling
  • *
  • Beiträge: 7
  • Geschlecht: Männlich
Re: XML Datei generieren
« Antwort #21 am: 14.09.05 - 18:56:56 »
Hi,

Auch wenn ich mit dieser Frage wahrscheinlich die ganze Breite meines Unwissens bzgl. xml dokumentiere:

Hat Jemand eine Idee, wie ich an dieses "Stylesheet" dazu bringe statt dem Attribut:  "ÄÖÜName" "ss:Name" auszugeben?
Der Doppelpunkt ist halt das Problem!
Sind so die ersten Versuche eine Exceltabelle per xml zu füllen.

<?xml version="1.0"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  xmlns:dxl="http://www.lotus.com/dxl" exclude-result-prefixes="dxl">
        <xsl:output method="xml" indent="yes" encoding="UTF-8" omit-xml-declaration="no"/>
        <xsl:template match="/">
                <xsl:apply-templates select="dxl:document"/>
        </xsl:template>
        <xsl:template match="dxl:document">
   <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
       xmlns:o="urn:schemas-microsoft-com:office:office"
       xmlns:x="urn:schemas-microsoft-com:office:excel"
       xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
       xmlns:html="http://www.w3.org/TR/REC-html40">
                  <xsl:call-template name="GetValue"/>
                  
   </Workbook>
     </xsl:template>
       
       <xsl:template name="GetValue">
                <xsl:for-each select="dxl:item">
                        <xsl:choose>
                                <xsl:when test="@name='Cars'">
              <xsl:element name="Worksheet">
                 <xsl:attribute name = "ÄÖÜName">
                         <xsl:value-of select="*"/>
                 </xsl:attribute>
               </xsl:element>
                                </xsl:when>
                        </xsl:choose>
                </xsl:for-each>
        </xsl:template>
 </xsl:transform>


Vielen Dank schonmal.

Jester

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: XML Datei generieren
« Antwort #22 am: 14.09.05 - 21:00:13 »
länger nicht mehr mit xslt gearbeitet, aber der Doppelpunkt wie du sagst ist ein namespace. Oder vielleicht besser gesagt ein namespace qualifier.
Ich frag mich jetzt, ob das überhaupt in xslt1.0 unterstützt wird.
Hier wird ein workaround vorgeschlagen:
http://www.xslt.com/html/xsl-list/2005-03/msg01105.html

oder hier:
http://www.xml.com/pub/a/2001/04/04/trxml/

« Letzte Änderung: 14.09.05 - 21:07:35 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: XML Datei generieren
« Antwort #23 am: 14.09.05 - 21:13:42 »
Code

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  xmlns:dxl="http://www.lotus.com/dxl"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 exclude-result-prefixes="dxl"> 

Versuch auch mal den Namespace identifier oder wie das heisst (ich meine das ss) wie oben in dem Root-Tag des xsls zu deklarieren.

Vielleicht hilft auch das:
exclude-result-prefixes
« Letzte Änderung: 14.09.05 - 21:26:46 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline CourtJester

  • Frischling
  • *
  • Beiträge: 7
  • Geschlecht: Männlich
Re: XML Datei generieren
« Antwort #24 am: 15.09.05 - 07:50:05 »
Hi,

Wow, vielen Dank!
Ich habe gestern ungefähr 50 mal versucht über verschiedene abenteuerliche Konstruktionen, mit und ohne Deklaration im Transform Tag, den Übersetzer dazu zu bringen das ss:Name auszuspucken.
Irgendwie muß ich wohl den Überblick verloren haben (Wie so häufig, wenn man eigentlich nicht so genau weiß was man tut), denn heute hat die Deklaration auf Anhieb ausgereicht:

...
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"   xmlns:dxl="http://www.lotus.com/dxl" exclude-result-prefixes="dxl">
...

Das Ergebnis ist schon jetzt eine (bisher leere) exellesbare und über zusätzliche tag's formatierbare (sonst würde csv ja reichen) Tabelle.
Ich bin vollauf begeistert (merkt man wahrscheinlich).
Statt irgendwelche Library's einzubinden und für jedes Produkt eine eigene Subroutine zu schaffen, kann man Tabellen, Worddokumente und FDF's einfach mit derselben Routine, durch auswählen eines passenden Stylesheets schreiben.

Dann werde ich den Kram 'mal in mein eigentliches Projekt einbauen.

Vielen Dank nochmal.


Jester

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: XML Datei generieren
« Antwort #25 am: 15.09.05 - 11:01:09 »
 8)
Cool. Ich mag Fragensteller, bei denen man nur ein paar Anregungen geben muß und schnipps ist das Ergebnis da.
Namespaces sorgen in xml allgemein des öfteren für Kopfkratzen.

Gruß Axel
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline CourtJester

  • Frischling
  • *
  • Beiträge: 7
  • Geschlecht: Männlich
Re: XML Datei generieren
« Antwort #26 am: 16.09.05 - 08:00:21 »
ARgh! Zu früh gefreut.

So im richtigen Leben, sieht es doch meißt wieder anders aus:

Losgelassen auf meine richtigen "Targets", habe ich ein Dokument bei dem die Transformation mit "XSL transform operation failed" abbricht.
Bisher habe ich noch nichts anders gemacht als dort oben und einige verschiedene ExcelTabellen in verschiedenen Files, mit einer Laufnummer als Namen generiert.
Bei genau diesem einen Dokument steigt die Routine aus, komischerweise NACHDEM (!) sie das File mit den (verwertbaren!) Informationen schon geschrieben hat.

Das Platzieren an verschiedene Stellen in der View (Laufnummer verändert), zeigt mir das es auch tatsächlich am Dokument liegt, denn egal wo es sich befindet, bricht das Script immer bei diesem Dokument ab.

Zunächst schätzte ich die Größe des Dokumentes (4,4MB) als Problem ein, jedoch auch nachdem ich sämtliche Attachments gelöst hatte und sich der Umfang mit ca 200kB in einer Größenordnung befand in der andere Dok's problemlos durchlaufen, brach die Transformation wieder mit diesem Dok ab.

Ich schätze, das verpasst diesem Projekt erst einmal den Todesstoß, da ich das Ergebnis natürlich auch mit "normalen" Fileoperationen hinbekomme und im Geschäftsleben eben nur das kurzfristig erreichbare Ergebnis zählt (Ganz egal wie viele Generationen an nachfolgenden Programmierern mit einem Tick mehr "Grundlagenforschung" tausende von Euros wieder einsparen).

Wenn allerdings Jemand eine spontane Idee (die sich leicht verifizieren lässt) hätte, wäre ich natürlich dankbar.
Leider kann ich das Originaldokument aber nicht für Versuche zur Verfügung stellen.

Gruß Jester (Markus)

Offline Christopher

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.060
  • Geschlecht: Männlich
  • Dumm ist der, der dummes tut.
Re: XML Datei generieren
« Antwort #27 am: 27.02.07 - 13:48:17 »
@Hevelmann

bin heute mal auf Dein Beispiel gestoßen und finde es richtig gut ich beschäftige mich seit kurzem mit XML. Gibt es auch die Möglichkeit einen Anhang zu übergeben also Dateiname Dateianhang usw.

mit dem DXL importer und exporter scheint das ja zu gehen wie warum usw. habe ich aber noch nicht verstanden...
Client & Server R 5.011
Principal Certified Lotus Professional R5 System Administration
Microsoft Certified Systems Engineer 2000
Microsoft Certified Systems Administrator 2000
Microsoft Certified Systems Administrator 2003
Microsoft Certified Systems Engineer 2003

Offline Hevelmann

  • Frischling
  • *
  • Beiträge: 43
  • Geschlecht: Männlich
Re: XML Datei generieren
« Antwort #28 am: 27.02.07 - 16:28:38 »
@Hevelmann

bin heute mal auf Dein Beispiel gestoßen und finde es richtig gut ich beschäftige mich seit kurzem mit XML. Gibt es auch die Möglichkeit einen Anhang zu übergeben also Dateiname Dateianhang usw.

mit dem DXL importer und exporter scheint das ja zu gehen wie warum usw. habe ich aber noch nicht verstanden...


hui das ist ja schon 3 1/2 jahre her. wie die zeit doch vergeht.

@Christopher: was genau hast du denn vor?

Offline Christopher

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.060
  • Geschlecht: Männlich
  • Dumm ist der, der dummes tut.
Re: XML Datei generieren
« Antwort #29 am: 27.02.07 - 16:32:34 »
ja die zeit vergeht immer so verdammt schnell  ;D

Ich will einfach eine Email als XML Dateiexportieren und so evlt. eine archiv lösung bauen oder wo man auf die Daten mit anderen Tools wieder zugreifen kann.
Client & Server R 5.011
Principal Certified Lotus Professional R5 System Administration
Microsoft Certified Systems Engineer 2000
Microsoft Certified Systems Administrator 2000
Microsoft Certified Systems Administrator 2003
Microsoft Certified Systems Engineer 2003

Offline Hevelmann

  • Frischling
  • *
  • Beiträge: 43
  • Geschlecht: Männlich
Re: XML Datei generieren
« Antwort #30 am: 27.02.07 - 17:07:03 »
ok, mittels der exporter klasse, exportierst du die mail in eine datei. alle angänge der email werden base64 encoded dargestellt, so dass du auch mit anderen tools darauf zugreifen/umwandeln kannst.

hier mal ein auszug aus einen base64 encoded Anhang:

Code
lQAmAAAAAAAAAAAAAAABAAAAAAAAAHgAJQAIAAEACAABAIUAAwCWABkKAAAAAAAAAAAAACUABwpA
BADCAAEPxAAFQmEGOnRACQDEAEAEAMYACTokAgYhSXQAEkAJAAEAQAQAxQAEdAYCBsICBSQ6DwAQ
QAkAQAQAxAAFGFsoBgLCBgMhSg9ACQDCAEAEAMUAAVDDAsIGAyQ6D0AJAMIAQAQAxgACOiTCAgUo
BlAAEkAJAAEAQAQAxADCEAYTOkpJSnnCAAFuyAADDwAPQAcAxgBABADDAAMTABPCUAd3QltQWQ8S
xAAEDxgAWcJQBXlwMgATQAcAwgBABADFAAITBsICwgYDJDoPxgAEW4RJIsJKATtAAgABEMUAARBA
AgDDAMMYARDPAEAEAMUAAhNhwgLCBgMkOg/EAAYTOiQoIWHCOwF/QAIAxgABD0ACAMIAAXPDfAJ2
D84AQAQAxQACEyLCAsIGAyQ6GMQAAjokwwIBBsJKAjsQwgUEDzJPBUAEAAkAGDdRQ1FGEA/NAEAE
AMUAAhMiwwIEBiE7GMMAA3AGAsIGDQIGAiQ7DxdAFTBoCgVAAgDEAAETywAHEC4JBAlGEM4AQAQA
xQACEyLDAgQGITsYwgADGHkhwgYCAgbDAglyRQFFQGURYw1AAwABAMQQwwAHEDcJBAlGD8QAARPJ ...

die frage ist halt, ob das für ein archiv sinnvoll ist, da base64 encodierte dateien ca. 30% mehr speicherplatz benötigen, als originaldateien.

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: XML Datei generieren
« Antwort #31 am: 27.02.07 - 17:15:14 »
Seit letzten Jahr benutzt man MTOM (ist ein W3C-Standard).
z.B.: http://xfire.codehaus.org/MTOM
Zitat
MTOM is a way to handle large amounts of binary data in your services. Unlike attachments, the XML infoset stays the same. MTOM just "optimizes" any base64Binary data you have in your messages. When MTOM is turned on, this base64 data gets sent as a binary attachment saving time and space.
Microsoft und andere sind da auch sehr aktiv hinsichtlich der Unterstützung.
Braucht weniger Speicher als Base64. Bis das aber in NotesXML eingebaut wird... Das kann dauern.
Vielleicht ist aber der größere Speicherbedarf gar nicht so ein großes Problem, weil Archiv-Speicher auch nicht mehr soooo teuer ist und in existierenden Archiven sowieso viel base64encoded rumliegt.

Gruß Axel 
« Letzte Änderung: 27.02.07 - 18:04:12 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline jtuemmer

  • Frischling
  • *
  • Beiträge: 19
Re: XML Datei generieren
« Antwort #32 am: 28.02.07 - 07:47:11 »
@Havelmann:

Zitat: "ok, mittels der exporter klasse, exportierst du die mail in eine datei. alle angänge der email werden base64 encoded dargestellt, so dass du auch mit anderen tools darauf zugreifen/umwandeln kannst."

Grundsätzlich ist diese Aussage so richtig. Es ist allerdings Vorsicht geboten: Notes/DOMINO bietet nämlich die Möglichkeit, Anhänge am Server per default zu komprimieren. Die meisten der mir bekannten Notes/DOMINO Anwendern (Unternehmen) nutzen diese Option, um den Speicherbedarf einigermassen in den Griff zu bekommen. Wenn die Option zur Komprimierung der Attachments eingeschaltet ist, dann sind die Dateianhänge in dem vom DXL Exporter generierten XML zwar BASE64 kodiert, entscheidend ist aber, dass die BASE64 Kodierung auf den komprimierten Anhang und nicht auf den unkomprimierten Anhang engewendet wird. Der DXL Exporter dekomprimiert die Anhänge nicht, bevor er sie BASE64 kodiert und das Ergebnis dann in das XML Dokument packt.

Für die Kompression der Anhänge stehen zwei Algorithmen zur Auswahl: Huffman und LHZIP, wenn ich mich richtig erinnere. Und mindestens der aus Effizienzgründen sehr häufig benutzte Huffman Algorithmus ist nicht dokumentiert oder über eine API zugänglich. Das heisst dann im Klartext, dass Du die Dateianhänge in so generierten XML Dateien nie wieder lesen können wirst. Und das ist dann für die Archivierung nicht wirklich ein guter Ansatz ;-)


Jochen

Offline Christopher

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.060
  • Geschlecht: Männlich
  • Dumm ist der, der dummes tut.
Re: XML Datei generieren
« Antwort #33 am: 28.02.07 - 08:02:13 »
Mich würde jetzt erst mal interessieren wie ich einen solchen Anhang ach wenns BASE64 ist in ein XML Dokument über ein XSL exportieren kann.

Dann noch eine andere Frage wenn ich über die Exporter Klasse eine Email z.B. exportiere kann ich ja zum Teil auch nichts mehr mit anfangen oder? Da teilweise Betreff und Body Text auch Base64 kodiert zu scheinen.

Client & Server R 5.011
Principal Certified Lotus Professional R5 System Administration
Microsoft Certified Systems Engineer 2000
Microsoft Certified Systems Administrator 2000
Microsoft Certified Systems Administrator 2003
Microsoft Certified Systems Engineer 2003

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz