XML zu Word

T

Tobias Köhler

Hallo Leute.

Ich steige gerade in die Welt von XML ein und meine Aufgabe ist es, eine XML-Datei per XSLT in Word umzuformen.

Meine XML Datei ist folgende
Code:
<?xml version="1.0" encoding="UTF-8"?>
<w:rechnung xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml">
	<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>5</anzahl>
				<bezeichnung>name</bezeichnung>
				<beschreibung>Artikel 3</beschreibung>
				<preis>50.0</preis>
			</zeile>
			<zeile>
				<anzahl>5</anzahl>
				<bezeichnung>testname</bezeichnung>
				<beschreibung>Neuer Artikel</beschreibung>
				<preis>100.0</preis>
			</zeile>
			<zeile>
				<anzahl>5</anzahl>
				<bezeichnung>test</bezeichnung>
				<beschreibung>Testartikel</beschreibung>
				<preis>150.0</preis>
			</zeile>
			<zeile>
				<anzahl_gesamt>15</anzahl_gesamt>
				<preis_gesamt>300.0</preis_gesamt>
			</zeile>
		</warenkorb>
	</zentrum>
</w:rechnung>

Wie schaff ich es jetzt, daraus per XSLT eine Word-Datei zu erzeugen?

Ich habe ja bereits eine XSL-Datei angefangen, nur über die Tabelle hinaus komm ich leider nicht:confused:
 
Danke für die schnelle Antwort. Noch ein paar kurze Fragen:

<xsl:template match="/"> macht man, um das "Standard"-aussehen festzulegen, oder?

<xsl:apply-templates select="Courses/Course" /> .... Ich habe ja nun mehrere Tags... kann ich das dann einfach ranhängen? So in der Art:
<xsl:apply-templates select="rechnung/zentrum/briefkopf/warenkorb/zeile" />

?

oder gibt es ein maximum für apply-templates?
 
<xsl:template match="/"> macht man, um das "Standard"-aussehen festzulegen, oder?

"/" ist grob gesagt der Anfangspunkt eines XML-Dokuments.


<xsl:apply-templates select="Courses/Course" /> .... Ich habe ja nun mehrere Tags... kann ich das dann einfach ranhängen? So in der Art:
<xsl:apply-templates select="rechnung/zentrum/briefkopf/warenkorb/zeile" />


Also ich wüsste keinen Grund warum das nicht funktionieren sollte.

MFG

zEriX
 
Ok, meine XSL-Datei ist jetzt fertig, aber wenn ich die XML-Datei mit word öffne, und die XSL-Datei darauf anwende, wird nichts angezeigt :confused:
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="rechnung/briefkopf/zentrum" />     
   </w:body>
  </w:wordDocument>
 </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:stylesheet>
 
Ich hab das leider noch nicht gemacht, also XML in Word. Mein Vorschlag wäre, dass du dir einen XSLT-Processor downloadest, z. b. MSXSL. Damit parst du dann das File in ein anderes File und kannst dann auch schauen ob was drin steht.

MFG

zEriX
 
hm, nix :rolleyes:

naja, letztendlich brauch ich aber eine XSL-Datei, da ich das ganze nachher über JDOM laufen lassen möchte. Aber nun hänge ich erstmal an der XSL-Datei^^
aber trotzdem schonmal danke;-)
 
Ok, war gar nicht so schwer, ich hatte nur noch nicht so ganz die Datenstruktur von XSL verstanden. Nun klappt es. Ich weiß nicht, ob dasselbe dann auch für wordML gilt, aber wie heißt der Befehl, um den Text zu zentrieren?
 
Hallo

2 "neue"Fragen habe ich, gehört aber noch eher zu diesem Thema, bzw vertiefend;-)

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
 
Zuletzt bearbeitet von einem Moderator:
Also es kann ja sein, dass ich mich irre, aber meines wissens nach kann man keine Bilder in XML laden.

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?

Was meinst du damit?

Nur soll das Ausgabeformat Word sein, bzw. eine XML-Datei, sie automatisch mit Word geöffnet wird.

Das musst du nicht mit JDOM machen. Du kannst mit JDOM die Word-Datei erstellen und sie dann mittels
Code:
Runtime.getRuntime().exec("cmd /C start \"DateiName");
starten.


Ein Rat von mir wäre noch, dass du diese Fragen im Java-Forum stellst, da sie mehr mit Java zu tun haben als mit XML. Da kann dir nämlich sicherlich schneller geholfen werden. :)

MFG

zEriX
 
Zurück