HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

XML állomány tartalmának konvertálása Word dokumentumba


Példaprogram letöltése

9452 bájt

Amióta a vonatkozó szabványok létrejöttek, az XML és XSLT állományok az információ tárolásának és mozgatásának legszélesebb körében használatosak, s túlzás nélkül állítható, hogy méltán foglalják el jogos helyüket ebben az informatikai szegmensben. Cikkünkben e páros funkcionalitását vizsgálgatjuk egy olyan lehetőség kapcsán, mely lehetővé teszi egy adott XML állomány tartalmának felhasználóbarát megjelenítését, történetesen egy Word dokumentumban történő publikálást.

A mellékelt példa használata előtt importálnia kell a Microsoft XML és a Microsoft Word komponenseket. Ennek módja a következő: a Project menüből válasszuk ki az Import Type Library menüpontot. A listában keressük meg a Microsoft XML és Microsoft Word elemeket. A Create Unit gombbal hozzuk létre a unit-okat, amelyekre a programban a uses kulcsszó után hivatkozunk.
XML állomány jellemzői
A példában használandó XML állomány olyan szempontból különleges - bár jobb szó az, hogy ritkábban használt -, hogy a <WareHouse></WareHouse> gyökérelemeken belül két főcsomópontot tartalmaz, és ezek is rendelkeznek három, illetve két gyermekcsomóponttal. Struktúrája egy többdimenziós mátrix-struktúra. Az ilyen struktúrában leképezhetők életszerű összefüggések.
Az állomány két alcsomópontja az <Entries></Entries>, míg ezek gyermekcsomópontjai a <Entry></Entry> tagok között helyezkednek el.
A mellékelt példa mappájában elhelyezett állomány neve WareHouse.xml.
Logika az XSLT állományban
A mellékelt programban egy metódussal feldolgozzuk az XML állományunkat a sémaállományban meghatározott logika alapján. Ez a logika annyit jelent, hogy az XSL vezérlő szerkezetek segítségével végighaladunk valamennyi <Entry></Entry> elemen, és értelmezzük a tagok Type nevű attribútumait, valamint megformázzuk a <Name></Name> és a <Description></Description> elemek közötti szöveget. Amennyiben a formázás kész, akkor a létrejövő kimenetet egy WareHouse.rtf Microsoft Word dokumentumba mentjük.
Az XML állomány bejegyzésein az xsl:for-each szerkezettel haladunk végig:
...
<xsl:template match="/">
<xsl:text>{\rtf1</xsl:text>
<xsl:for-each select="WareHouse/Entries/Entry">
Az XML <Name></Name> tagjai közt található terméknevet BOLD típusúra formázzuk:
  <xsl:text>\par\b </xsl:text>
  <xsl:value-of select="Name"/>
  <xsl:text>\b0\i  </xsl:text>
A fenti tagban találunk egy TYPE attribútumot, mely minősítő számot tartalmaz a termékhez, annak mennyiségétől függően. Ezt értelmezve egy meghatározott szöveget illeszt a név mellé ITALIC formázással:
  <xsl:if test="Name[@Type='1']">Kritikus mennyiség alatt...</xsl:if>
  <xsl:if test="Name[@Type='2']">Elegendő raktárkészlet...</xsl:if>
  <xsl:text>\i0\par </xsl:text>
Majd a <Description></Description> tagok közötti elemeket egy sorral lejjebb jeleníti meg normál (alapértelmezett) szöveggel:
  <xsl:value-of select="Description"/>
  <xsl:text>\par</xsl:text>
</xsl:for-each>
<xsl:text>}</xsl:text>
</xsl:template>
...
Konvertálás
A példa Form-ján megtalálható PageControl három füle alatt egy-egy TMemo kontrolt találunk, melyek közül kettőbe a forrás XML állomány tartalmát, a konverzióhoz szükséges XSLT állományt töltjük be, míg a harmadik kontrolban az eredmény-karakterlánc jelenik meg.
A művelet elvégzése előtt egy-egy objektumba töltjük az XML, és XSLT állományok tartalmát.
XMLDoc := CoDOMDocument.Create;
XSLDoc := CoDOMDocument.Create;
XMLDoc.load(ExtractFilePath(Application.ExeName)+'WareHouse.xml'); XSLDoc.load(ExtractFilePath(Application.ExeName)+'WareHouse.xslt');
Az XMLDOMDocument objektum transformNode metódusának meghívásával konvertálhatjuk az XML-t az XSLT állomány segítségével egy speciális szöveggé, mely formázó elemeket is tartalmaz, így a generált RTF állományban formázva jelenik meg az információ.
Memo3.Text := XMLDoc.transformNode(XSLDoc); Memo3.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'WareHouse.rtf');
A formázás után programból elindítjuk az MS Word alkalmazást, hogy meggyőződjünk a művelet sikeréről.



Cikksorozat

#IDKategóriaCikk címeSorozat
4397Windows.NET Framework konfigurálása az operációs rendszerben1. rész
4446Windows.NET Framework konfigurációs snap-in2. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 661. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |