Посмотрите на процессор PHP XSLT.
http://php.net/manual/en/class.xsltprocessor.php
Использовать следующим образом:
<?php
$sXml = "<xml>";
$sXml .= "<sudhir>hello sudhir</sudhir>";
$sXml .= "</xml>";
# LOAD XML FILE
$XML = new DOMDocument();
$XML->loadXML( $sXml );
# START XSLT
$xslt = new XSLTProcessor();
$XSL = new DOMDocument();
$XSL->load( 'xsl/index.xsl', LIBXML_NOCDATA);
$xslt->importStylesheet( $XSL );
#PRINT
print $xslt->transformToXML( $XML );
?>
(от http://php.net/manual/en/book.xsl.php)
UPDATE
Вы спросили в комментарии, как перехватить запрос от определенного пользовательского агента (например, Googlebot). Это можно сделать разными способами, в зависимости от используемой вами технологии веб-сервера.
В Apache одним из методов будет использование mod_rewrite для внутреннего перенаправления обработки запроса на PHP-скрипт, содержащий код, аналогичный тому, что мы видим выше. Этот скрипт извлекает XML из первоначально запрошенного URL-адреса и передает преобразование клиенту. Правило перезаписи будет иметь Условие перезаписи , которое сравнивает заголовок HTTP_USER_AGENT с заголовком Google. Вот пример правила (не проверено, но вы должны понять):
RewriteCond %{HTTP_USER_AGENT} ^(.*)Googlebot(.*)$ [NC]
RewriteRule ^(.*\.xml.*)$ /renderxslt.php?url=$1 [L]
Вкратце, условие ищет реферера, начинающегося со строки "googlebot", и правило перезаписи соответствует любому URL со строкой ".xml" в нем и передает полный URL на страницу renderxslt.php как параметр строки запроса.
Порт mod_rewrite exis для IIS (http://www.isapirewrite.com/).
В качестве альтернативы, с IIS вы можете использовать ASP.NET HTTP-модуль для перехвата запроса, снова проверяя Request.Headers["HTTP_USER_AGENT"]
на подпись Google. Затем вы можете продолжить работу, как описано выше, прочитав HTML-код, сгенерированный вашим PHP-скриптом, или альтернативно, используя элемент управления ASP.NET XML:
<asp:Xml ID="Xml1" runat="server" DocumentSource="~/cdlist.xml" TransformSource="~/listformat.xsl"></asp:Xml>