Russian Qt Forum
Сентябрь 21, 2024, 14:06 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt не верно обрабатывает XPath в XSLT?  (Прочитано 5384 раз)
ixSci
Гость
« : Июль 30, 2009, 14:49 »

Всем доброго времени суток,

У меня есть следующий код:
Код
C++ (Qt)
QCoreApplication xApplication(argc, argv);
 
   QXmlQuery xQuery(QXmlQuery::XSLT20);
   QBuffer xOriginalContent;
   QString xXMLContent = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><folder id=\"0\" name=\"root\" is_expanded=\"false\"></folder>";
   xOriginalContent.setData( xXMLContent.toAscii() );
   xOriginalContent.open(QBuffer::ReadWrite);
   xOriginalContent.reset();
 
   xQuery.setFocus(&xOriginalContent);
   QString xRequestString;
   xRequestString += "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
                               "<xsl:stylesheet version=\"2.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">"
                               "   <xsl:template match=\"/\">"
                               "       <xsl:apply-templates/>"
                               "   </xsl:template>"
                               "   <xsl:template match=\"folder\">"
                               "       <folder name=\"{@name}\" id=\"{@id}\"  is_expanded=\"{@is_expanded}\">"
                               "           <xsl:copy-of select=\"child::node()\"/>"
                               "           <xsl:if test=\"@id=0\">"
                               "               <folder id=\"1\" name=\"name\"> </folder>"
                               "           </xsl:if>"
                               "       </folder>"
                               "   </xsl:template>"
                               "   <xsl:template match=\"*\">"
                               "       <xsl:copy-of select=\".\"/>"
                               "   </xsl:template>"
                               "</xsl:stylesheet>";
 
   xQuery.setQuery(xRequestString);      
   assert(xQuery.isValid());
   QBuffer xOutputContent;
   xOutputContent.open(QBuffer::ReadWrite);
   xOutputContent.reset();
   xQuery.evaluateTo(&xOutputContent);
   return xApplication.exec();
 
который в результате должен дать:
Цитировать
<folder name="root" id="0" is_expanded="false"><folder id="1" name="name"/></folder>
Но на деле дает
Цитировать
<folder name="root" id="" is_expanded=""><folder id="1" name="name"/></folder>
Это происходит потому,что не отрабатывают инструкции для XPath <folder name=\"{@name}\" id=\"{@id}\"  is_expanded=\"{@is_expanded}\">". Т.е всегда отрабатывает только первая инструкция, а остальные игнорятся.
Кто -нибудь сталкивался с подобным? Или мне стоит писать в qtsoftware и спрашивать их?

Всем спасибо за внимание к моей проблеме.
Записан
ixSci
Гость
« Ответ #1 : Август 04, 2009, 10:22 »

Проблема исправлена в Qt 4.5.2. Закрыто.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.161 секунд. Запросов: 21.