| Новости | 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>_____________________________________________________________