Announcement

Collapse
No announcement yet.

XML zu Word

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XML zu Word

    Hallo.
    Ich bin noch ziemlich neu in der Welt von XML und meine erste Aufgabe ist es, eine Rechnung/Bestellzusammenfassung mit XML zu erstellen. Diese soll dann zu einem Wordfile umgeändert werden. Nun ist aber das Problem, dass wenn ich die XML-Datei in word einlese und die XSL-Datei darauf anwende, nix angezeigt wird.
    Ich poste einfach mal meine beiden codes und hoffe ihr könnt mir helfen.

    Die XML-Datei
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <rechnung>
    	<briefkopf>
    		<logo>Hier könnte ein Logo sein</logo>
    		<datum>21.08.2007</datum>
    		<text>Rechnung/Bestellzusammenfassung für aaa aaa</text>
    	</briefkopf>
    	
    	<zentrum>
    		<warenkorb>
    			<zeile>
    				<anzahl>10</anzahl>
    				<bezeichnung>name</bezeichnung>
    				<beschreibung>Artikel 3</beschreibung>
    				<preis>100.0</preis>
    			</zeile>
    			<zeile>
    				<anzahl>10</anzahl>
    				<bezeichnung>testname</bezeichnung>
    				<beschreibung>Neuer Artikel</beschreibung>
    				<preis>200.0</preis>
    			</zeile>
    			<zeile>
    				<anzahl>10</anzahl>
    				<bezeichnung>test</bezeichnung>
    				<beschreibung>Testartikel</beschreibung>
    				<preis>300.0</preis>
    			</zeile>
    			<zusammenfassung>
    				<anzahl_gesamt>30</anzahl_gesamt>
    				<preis_gesamt>600.0</preis_gesamt>
    			</zusammenfassung>
    		</warenkorb>
    	</zentrum>
    </rechnung>
    Die XSL-Datei
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml">
    	<xsl:template match="/">
    		<xsl:processing-instruction name="mso-application">
    			<xsl:text>progid="Word.Document"</xsl:text>
    		</xsl:processing-instruction>
    		<w:wordDocument>
    			<w:body>   
    				<xsl:apply-templates select="briefkopf/zentrum" />     
    			</w:body>
    		</w:wordDocument>
    	</xsl:template>
     
    	<xsl:template match="rechnung">
    		<w:body>   
    			<xsl:apply-templates select="briefkopf/zentrum" />     
    		</w:body>
    	</xsl:template>
     
    	<xsl:template match="briefkopf">
    		<w:p>
    			<w:t>
    				<xsl:value-of select="logo" />
    				<xsl:value-of select="datum" />
    				<xsl:value-of select="text" />
    			</w:t>
    		</w:p> 
    	</xsl:template>
     
    	<xsl:template match="zentrum">
    		<w:tbl>
    			<w:tblPr>
    				<w:tblStyle w:val="TableGrid"/>
    				<w:tblW w:w="0" w:type="auto"/>
    				<w:tblLook w:val="01E0"/>
    			</w:tblPr>
    			<w:tblGrid>
    				<w:gridCol w:w="4428"/>
    				<w:gridCol w:w="4428"/>
    			</w:tblGrid>
    			<w:tr>
    				<w:tc>
    					<w:p>
    						<w:r>
    							<w:t>Anzahl</w:t>
    						</w:r>
    					</w:p>
    				</w:tc>
    				<w:tc>
    					<w:p>
    						<w:r>
    							<w:t>Bezeichnung</w:t>
    						</w:r>
    					</w:p>
    				</w:tc>
    				<w:tc>
    					<w:p>
    						<w:r>
    							<w:t>Beschreibung</w:t>
    						</w:r>
    					</w:p>
    				</w:tc>
    				<w:tc>
    					<w:p>
    						<w:r>
    							<w:t>Preis</w:t>
    						</w:r>
    					</w:p>
    				</w:tc>
    			</w:tr>
    		<xsl:apply-templates select="warenkorb/zeile" />
    		</w:tbl>
    	</xsl:template>
    
    	<xsl:template match="zeile">
    		<w:tr>
    			<w:tc>
    				<w:p>
    					<w:r>
    						<w:t>
    							<xsl:value-of select="anzahl" />
    						</w:t>
    					</w:r>
    				</w:p>
    			</w:tc>
    			<w:tc>
    				<w:p>
    					<w:r>
    						<w:t>
    							<xsl:value-of select="bezeichnung"/>
    						</w:t>
    					</w:r>
    				</w:p>
    			</w:tc>
    			<w:tc>
    				<w:p>
    					<w:r>
    						<w:t>
    							<xsl:value-of select="beschreibung"/>
    						</w:t>
    					</w:r>
    				</w:p>
    			</w:tc>
    			<w:tc>
    				<w:p>
    					<w:r>
    						<w:t>
    							<xsl:value-of select="preis"/>
    						</w:t>
    					</w:r>
    				</w:p>
    			</w:tc>
    		</w:tr>
    	</xsl:template> 
     
    	<xsl:template match="zusammenfassung">
    		<w:tr>
    			<w:tc>
    				<w:p>
    					<w:r>
    						<w:t>
    							<xsl:value-of select="anzahl_gesamt" />
    						</w:t>
    					</w:r>
    				</w:p>
    			</w:tc>
    			<w:tc>
    				<w:p>
    					<w:r>
    						<w:t>
    							<xsl:value-of select="preis_gesamt"/>
    						</w:t>
    					</w:r>
    				</w:p>
    			</w:tc>
    		</w:tr>
    	</xsl:template> 
    </xsl:stylesheet>

  • #2
    Du verwendest "briefkopf/zentrum", aber zentrum ist offenbar kein Kindelement von briefkopf, sondern von rechnung.

    Comment


    • #3
      Tobias Köhler

      Oh, ja, das wars wohl^^

      zentrum soll nachher in der Mitte der Seite sein. Gibt es da bei WordML eine Funktion, die den Text zentriert? Oder vielmehr, weiß jemand wie sie lautet?

      Comment


      • #4
        Hallo

        2 Fragen habe ich, gehört aber noch eher zu diesem Thema

        Mein erstes Problem ist folgendes
        Ich erstelle mit JDOM eine XML-Datei. Diese soll einen Banner haben. Wie kann ich mit JDOM bilder in XML laden?

        Das aber größere Problem ist:
        Diese XML Datei soll dann per JDOM transformiert werden. Die passende XSL-Datei liegt bereits vor. Nur soll das Ausgabeformat Word sein, bzw. eine XML-Datei, sie automatisch mit Word geöffnet wird.

        Ok, da gibt es auch einen Befehl für, aber bisher war es mir nur möglich, den manuell einzugeben.

        Code:
        <?mso-application progid="Word.Document"?>
        Gibt es dafür eine Möglichkeit, per JDOM dies in die XML-Datei einzubinden?

        Hoffe, ihr könnt mir helfen

        Comment

        Working...
        X