Ulepšajte XML

Vrlo često se dešava da u svom dnevnom poslu radim sa XML datotekama, nastalim kao rezultat rada nekog servisa ili programa.

Te datoteke su najčešće bez preloma redova, bez uvlačenja paragrafa, samo jedna veeelika linija teksta koja nosi svu informaciju. Ovo, naravno, ne smeta mašinama kod obrade takvih datoteka, no smeta meni, malo ;), kao običnom smrtniku, posebno kod poređenja dve verzije istog fajla – u originalnom formatu je to nemoguće uraditi.

Sad, većina editora namenjenih radu sa XML-om imaju mogućnost “ulepšavanja” XML koda, i to je sve lepo i fino ako radite nad jednom, dve … do 5 datoteka. Šta raditi ako je pred vama direktorijum (da ne kažem “fascikla”, daleko bilo ;)) sa stotinak datoteka koje treba pregledati?

Programer bi prvo posegao za “napisaću program za to”, ali to najčešće nije racionalno; bolje uposliti vijuge i dođi do jednostavnog rešenja, brzo.

Problem: kako od nečitljivog XML-a dobiti čitljiv (po ljudima) XML?
Rešenje: transformacijom polaznog u ciljni XML, sa željenim formatiranjem
Tehnologija: XSLT, ili prirodni jezik za transformacije XML fajlova u nešto drugo

Iako XSLT smatram jednim od najružnijih ikada napisanih skript jezika (a nagledao sam ih se), za ovu svrhu je i više nego pogodan. Potrebne su dve stvari:

1. XSLT datoteka sa instrukcijama za izvođenje transformacije (MakePretty.XSLT) – u ovoj datoteci je upravo celo rešenje:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Ulepšavanje XML coda -->
<xsl:output method="xml" indent="yes" /> <!-- indent="yes" je ključno -->
<xsl:template match="*">
   <xsl:copy>
      <xsl:copy-of select="@*" />
      <xsl:apply-templates />
   </xsl:copy>
</xsl:template>
<xsl:template match="comment()|processing-instruction()">
   <xsl:copy />
</xsl:template>
</xsl:stylesheet>

2. Način da izvedemo transformaciju:

Predlažem NXSLT, jako dobru konzolnu aplikaciju Olega Kačenka (nisam siguran kako se piše ime na srpskom :?). Sada se obrada celog direktorijuma sa XML fajlovima svodi na:

for %i in (*.xml) nxslt.exe “%i” MakePretty.XSLT -o “out\%i”

(pretpostavka je da želite sve datoteke konvertovane u isto ime u poddirektorijumu out)

Update, 15.01.2005 – Način 2

Zahvaljujući Danilu (hvala Danilo :)), evo još jednog alternativnog načina za isti posao:

LibXML, odlična biblioteka, i deo te instalacije je xmllint; jedno „xmllint –format“ će odraditi posao.
Ovde je Win32 implementacija.

3 thoughts on “Ulepšajte XML”

  1. Погледај страницу Ивана Златковића, који је задужен за додавање подршке у званичну дистрибуцију: http://www.zlatkovic.com/libxml.en.html

    Све ово је укључено у саму библиотеку, једино он обезбеђује бинарна (преведена) издања.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.