Модификация кода, позволяющая загружать более одного файла XML одновременно.Полный PHP, XML, XSLT код предоставляется - PullRequest
0 голосов
/ 22 июня 2011

Я пытаюсь создать сценарий, который получает XML различных структур и создает один уникальный XML, содержащий все данные.Ключевым моментом является то, что с помощью XSLT я переименовываю / преобразую узлы / элементы, потому что, как я уже сказал, исходные XML-файлы имеют другую структуру.Таким образом, недавно созданный XML имеет общую структуру, которую я могу использовать правильно.

У меня вопрос: как я могу изменить это, чтобы получить результат нескольких XML?

XML будет относительным или абсолютным путем.

<?php

// create an XSLT processor and load the stylesheet as a DOM 
$xproc = new XsltProcessor();
$xslt = new DomDocument;
$xslt->load('stylesheet.xslt');    // this contains the code from above
$xproc->importStylesheet($xslt);


// DOM or the source XML
$xml = '';
$dom = new DomDocument;
$dom->loadXML($xml);


?>

1 Ответ

1 голос
/ 22 июня 2011

Хм.Что ж, у этого кота просто слишком много способов сделать скин, но есть два очевидных:

  1. Импорт файлов XML через слой XSLT.Это требует навыков XSLT.
  2. Импорт файлов XML через слой PHP.Это требует навыков работы с PHP.

Первое решение означает, что вы находите список всех файлов, которые вы хотите обработать, а затем создаете из него список файлов XML, аналогичный тому, который вы передаете процессору XSLT;

<list>
   <file src="..." />
   <file src="..." />
   <file src="..." />
</list>

Теперь вы просматриваете (или сопоставляете) эти файлы и используете что-то вроде:

<xsl:template match="file">
   <xsl:apply-templates select="document(@src)/*" />
</xsl:template>

Другое решение - найти все ваши файлы и связать их вместе в большийXML;

$xml = "<all_files>" ;
foreach ( $files as $file )
   $xml .= file_get_contents ( $file ) ;
$xml .= "</all_files>" ;

И пусть ваш XSLT применяет шаблоны как обычно.Это, очевидно, требует некоторой очистки (например, удаление объявлений XML и встроенных команд, если таковые имеются, возможно, также DTD и некоторые сущности, но это не слишком сложно)

Оба решения требуют изменений.Каковы ваши навыки?Что ты предпочитаешь делать?Вам нужно это для экономии памяти?Быстро?Сжатый?Гибкое

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...