Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Изменить XML с помощью XSL

20K
28 августа 2007 года
posdnyaa
14 / / 28.08.2007
Допустим есть xml (абсолютно любой) c секцией Documents:
 
Код:
<Documents>
   <Document no="1"/>
   <Document no="2"/>
   <Document no="3"/>
</Documents>

как мне средствами xsl добавить в уже существующий XML документ еще одну запись, например <Document no="4"/>. Непонятно как задать входной и выходной файлы.
Спасибо
333
31 августа 2007 года
GHopper
200 / / 28.12.2004
я вообще-то всегда считал, что xslt преднозначен для трансформации xml-документа в другой xml или html-документ. Так я его всю жизнь и использовал.
В любом случае не удастся изменить xml-документ средствами xslt, но можно сформировать новый xml-документ и в него уже добавить все, что тебе необходимо.

А код простой:

Код:
$xml  = new DOMDocument('1.0', 'windows-1251');
$xsl_proc = new XSLTProcessor();
$xsl  = new DOMDocument('1.0', 'windows-1251');
$xsl_proc->registerPhpFunctions();
$xsl_proc->setParameter('', 'begin', 1);
$xsl_proc->setParameter('', 'end', 25);
$xml->load('test_main.xml');
$xsl->load('test_main.xsl');

$xsl_proc->importStyleSheet($xsl);
echo $xsl_proc->transformToXML($xml);


пример берет test_main.xml форматирует его по правилам из text_main.xsl и выводит результат. Помимо этого я передаю xslt-процессору два параметра (использую для формирования постраничного вывода). Вместо вывода можно записать все это дело в файл... тебе решать.
355
01 сентября 2007 года
&lt;SCORP&gt;
786 / / 21.10.2006
Код:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>

    <xsl:template match="Documents">
        <Documents>
            <xsl:copy-of select="./@*"/>
            <xsl:copy-of select="*"/>
            <Document no="4"/>
        </Documents>
    </xsl:template>

</xsl:stylesheet>

как задать входной и выходной документ это зависит от того, какой XML парсер и XSL процессор используешь.
355
01 сентября 2007 года
&lt;SCORP&gt;
786 / / 21.10.2006
но вообще, это без XSL делается проще :)
337
01 сентября 2007 года
shine
719 / / 09.06.2006
[QUOTE=<SCORP>;209159]но вообще, это без XSL делается проще :)[/QUOTE]
+1
Вариант на вскидку:
1)Вычитываем xml-файл в переменную
2)Делаем обычную текстовую замену "</Documents>" на "<Document no="4"/></Documents>"
3)Записываем полученную строку поверх старых данных в xml-файл.
12
02 сентября 2007 года
alekciy
3.0K / / 13.12.2005
А есть ведь еще и DOM функции... :D . В общем автору стоило бы задуматься, а то ли он делает?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог