Название: Сохранение XSL
Отправлено: Astrologer от Сентябрь 27, 2010, 10:29
Всем привет. мне нужно сохранить такую строку - <?xml-stylesheet type="text/xsl" href="myXSL.xsl"?> Пишу: QFile file("d:\\dbf\\dom.xml"); QXmlStreamWriter stream(&file); file.open(QIODevice::WriteOnly); stream.setAutoFormatting(true); stream.setCodec("windows-1251"); stream.writeStartDocument(); XslNameFile = "myXSL.xsl"; QString styleSheet = "\n<?xml-stylesheet type=\"text/xsl\" href=\""; styleSheet.append(XslNameFile); styleSheet+= "\"?>\n"; stream.writeEntityReference(styleSheet); stream.writeStartElement("bookmark"); stream.writeAttribute("href", "http://qt.nokia.com/"); stream.writeTextElement("title", "Qt Home"); stream.writeEndElement(); // bookmark stream.writeEndDocument(); file.close();
На выходе: <?xml version="1.0" encoding="windows-1251"?>& <?xml-stylesheet type="text/xsl" href="myXSL.xsl"?> ;<bookmark href="http://qt.nokia.com/"> <title>Qt Home</title> </bookmark>
Почему вставляется ";" как от нее избавиться? Заранее спасибо :)
Название: Re: Сохранение XSL
Отправлено: Astrologer от Сентябрь 27, 2010, 12:48
Решение: QDomDocument doc; QString temp = "type=\"text/sql\" href=\""; temp.append(XslNameFile); temp+= "\""; QDomProcessingInstruction xmlDeclaration = doc.createProcessingInstruction( "xml", "version=\"1.0\" encoding=\"windows-1251\""); QDomProcessingInstruction styleDeclaration = doc.createProcessingInstruction( "xml-stylesheet", temp); doc.appendChild(xmlDeclaration); ...here goes the routine
Название: Re: Сохранение XSL
Отправлено: deaks от Сентябрь 27, 2010, 13:55
Да, DOM тут будет удобнее всего Ну или чтобы вообще не ошибиться используйте потоковый вывод - QTextStream tmp(&pFile); tmp.setCodec("UTF-8"); tmp << "<tmp>\n" << " <subtmp>" << та та та << та та та \n ... << "</tmp>\n"; Но сами понимаете это изврат)))))
Название: Re: Сохранение XSL
Отправлено: Astrologer от Сентябрь 27, 2010, 14:51
Тоже вариант - если уж совсем замучаюсь)) Теперь бьюсь над <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Как его записать средствами QDomDocument? Если так: QDomDocument doc; QDomProcessingInstruction xmlDeclaration = doc.createProcessingInstruction( "xml", "version=\"1.0\" encoding=\"windows-1251\""); doc.appendChild(xmlDeclaration); QDomElement xslElement = doc.createElement("xsl:stylesheet"); xslElement.setAttribute("version", "1.0"); xslElement.setAttribute("xmlns:xsl", "http://www.w3.org/1999/XSL/Transform"); doc.appendChild(xslElement);
То на выходе: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"/>
|