Domino 9 und frühere Versionen > ND6: Entwicklung

XML Datei generieren

<< < (5/7) > >>

Hevelmann:
@ 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

CourtJester:
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

flaite:
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/

flaite:

--- 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">


--- Ende Code ---
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

CourtJester:
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

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln