Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
mashi 15.11.2005 02:47 / 15.11.2005 02:55
Вот метод, который не претендует на оптимальность, но работает.############################################################# @main[] ^method[/test/file1.xml;/test/file2.xml] ############################################################# @method[donor_file;acceptor_file][donor;acceptor] # загружаем донора и переводим в формат таб-делимитед $donor[^xdoc::load[$donor_file]] $donor[^donor.transform[/test/transform.xsl]] ^donor.save[donor_tab.cfg; $.method[text] $.indent[no] $.omit-xml-declaration[yes] ] $donor[] # загружаем акцептора и переводим в формат таб-делимитед $acceptor[^xdoc::load[$acceptor_file]] $acceptor[^acceptor.transform[/test/transform.xsl]] ^acceptor.save[acceptor_tab.cfg; $.method[text] $.indent[no] $.omit-xml-declaration[yes] ] $acceptor[] # загружаем донора и акцептора в соответствующие таблицы... $donor[^table::load[donor_tab.cfg]] $acceptor[^table::load[acceptor_tab.cfg]] # ...и переводим их в хеши $donor[^donor.hash[link]] $acceptor[^acceptor.hash[link]] <table border="1"> ^donor.foreach[link;atribs]{ <tr> <td>$link</td> ^if(!def $acceptor.[$link]){ <td style="color:red">этого файла нет в акцепторе</td> }{ ^if($atribs.date == $acceptor.[$link].date && $atribs.size == $acceptor.[$link].size){<td>файл остался без изменений</td>}{<td style="color:red">есть изменения!</td>} } </tr> } </table> #############################################################Файл 'transform.xsl':
<?xml version="1.0" encoding="WINDOWS-1251"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/parcms/files"> date<xsl:text> </xsl:text>link<xsl:text> </xsl:text>size<xsl:text> </xsl:text>name<xsl:text> </xsl:text> <xsl:for-each select="file"> <xsl:apply-templates select="." /> </xsl:for-each> </xsl:template> <xsl:template match="files/file"> <xsl:value-of select="@date" /><xsl:text> </xsl:text><xsl:value-of select="@link" /><xsl:text> </xsl:text><xsl:value-of select="@size" /><xsl:text> </xsl:text><xsl:value-of select="." /><xsl:text> </xsl:text> </xsl:template> <xsl:template match="text()" /> </xsl:stylesheet>_____________________________________________________________
<?xml version="1.0" encoding="WINDOWS-1251"?> <parcms> <title>ParCMS: Content management System</title> <files> <file date="1131701691" link="/admin/admin.css" size="303">admin.css</file> <file date="1131701691" link="/admin/auto.p" size="1905">auto.p</file> <file date="1131701691" link="/admin/catalog/base/index.html" size="13264">index.html</file> <file date="1131701691" link="/admin/catalog/base/tableadded.tbl" size="589">tableadded.tbl</file> <file date="1131701691" link="/admin/catalog/base/tablelost.tbl" size="93">tablelost.tbl</file> </files> </parcms>_____________________________________________________________
<?xml version="1.0" encoding="WINDOWS-1251"?> <parcms> <title>ParCMS: Content management System</title> <files> <file date="1131701691" link="/admin/admin.css" size="286">admin.css</file> <file date="1131701691" link="/admin/auto.p" size="1905">auto.p</file> <file date="1131701691" link="/admin/catalog/base/index.html" size="13264">index.html</file> <file date="1131701691" link="/admin/catalog/base/tableadded.tbl" size="589">tableadded.tbl</file> </files> </parcms>_____________________________________________________________