MSXML + XSL программно...
От: youreeck Германия  
Дата: 19.09.03 10:32
Оценка:
Привет всем! Я наверное совсем тупой, но как мне получить через MSXML документ типа

<?xml ver ...> <!-- no problem -->
<xsl:something>
   <something1/>
   <something2/>
<xsl:something/>


и вдогонку про форматирование вывода XML файла — как применить этот самый XSL <xsl:output indent="yes"\> программно...
Re: MSXML + XSL программно...
От: mikkri Великобритания  
Дата: 19.09.03 11:08
Оценка:
Здравствуйте, youreeck, Вы писали:

Y>Привет всем! Я наверное совсем тупой, но как мне получить через MSXML документ типа


Y>
Y><?xml ver ...> <!-- no problem -->
Y><xsl:something>
Y>   <something1/>
Y>   <something2/>
Y><xsl:something/>
Y>


См. доку.

Y>и вдогонку про форматирование вывода XML файла — как применить этот самый XSL <xsl:output indent="yes"\> программно...


Так только через XSLT. Не факт, что он тебе нужен.
... << RSDN@Home 1.1 beta 1 >>
Re: MSXML + XSL программно...
От: youreeck Германия  
Дата: 19.09.03 11:54
Оценка:
Т.е. собственно (порывшись на форуме) захотелось увидеть код описанный тут

http://www.rsdn.ru/Forum/Message.aspx?mid=231916&amp;only=1
Автор:
Дата: 03.04.03


потому как я может что-то не то делаю, у меня не получилось...
Re: MSXML + XSL программно...
От: Андрей Майоров Россия http://blogs.byte-force.com/xor
Дата: 19.09.03 15:28
Оценка:
Здравствуйте, youreeck, Вы писали:

Y>Привет всем! Я наверное совсем тупой, но как мне получить через MSXML документ типа

Y>
Y><xsl:something>
Y> ...
Y><xsl:something/>
Y>

Вообще, оный документ не больно-то well-formed. Так что, как только ты его поправишь (сделаешь закрывающий тэг на самом деле закрывающим), он запросто загрузится в MSXML.DOMDocument.

Y>и вдогонку про форматирование вывода XML файла — как применить этот самый XSL <xsl:output indent="yes"\> программно...


Опять же, нужно начать с выбора правильных наклонов слэшей. Должно быть <xsl:output ... />.

По первому и второму вопросу тебе нужно почитать MSDN. У меня это лежит в platform sdk / xml web services / xml / xml products / msxml. Думаю, что и в MDSN online так же.

WBR,
XOR (xor/at/byte-force.com)
... << RSDN@Home 1.1 beta 2 >>
WBR,
XOR // BYTE-force
MSXML + XSL программно (Сохранение с отступами 2)
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 19.09.03 18:00
Оценка: 13 (3)
#Имя: FAQ.xml.indent2
Здравствуйте, youreeck, Вы писали:

Y>и вдогонку про форматирование вывода XML файла — как применить этот самый XSL <xsl:output indent="yes"\> программно... :shuffle:


вот утилитка с исходниками (VC7.1), которая форматирует заданный XML так — загружает его, сохраняет в файле XSL из своих ресурсов, загружает его тоже в MSXML документ, потом делается transformNode и полученный документ сохраняется на месте исходного.

Надо сказать, что такой метод работает практически на порядок быстрее, чем расставление переносов строки после каждого тега.
Re[2]: MSXML + XSL программно...
От: youreeck Германия  
Дата: 22.09.03 14:55
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, youreeck, Вы писали:

...
OE>вот утилитка с исходниками (VC7.1)
...
спасибо (в рейтинге булькнуло)... Ж8-)
Re: MSXML + XSL программно (Сохранение с отступами 2)
От: Penetron Россия  
Дата: 03.08.07 12:21
Оценка:
Здравствуйте, 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 в шаблоне.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.