Здравствуйте, Odi$$ey, Вы писали:
OE>Здравствуйте, youreeck, Вы писали:
Y>>и вдогонку про форматирование вывода XML файла — как применить этот самый XSL <xsl:output indent="yes"\> программно... :shuffle:
OE>вот утилитка с исходниками (VC7.1), которая форматирует заданный XML так — загружает его, сохраняет в файле XSL из своих ресурсов, загружает его тоже в MSXML документ, потом делается transformNode и полученный документ сохраняется на месте исходного.
OE>Надо сказать, что такой метод работает практически на порядок быстрее, чем расставление переносов строки после каждого тега.
А зачем такой большой xsl? Можно и проще:
MSXML2::IXMLDOMDocumentPtr doc, xsl;
xsl->loadXML(
"<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version=\"1.0\">"
"<xsl:output indent=\"yes\" />"
"<xsl:template match=\"*|@*|text()|comment()|processing-instruction()\">\r\n"
"<xsl:copy>\r\n"
"<xsl:apply-templates select=\"*|@*|text()|comment()|processing-instruction()\"/>\r\n"
"</xsl:copy>\r\n"
"</xsl:template>"
"</xsl:stylesheet>"
);
_bstr_t result = doc->transformNode( xsl );
здесь главное сохранить некоторые \r\n в шаблоне.