Re[6]: ASP vs. DHTML или как взять лучшее?
От: Zerger Россия  
Дата: 30.01.03 08:46
Оценка: 3 (1)
Здравствуйте, Аноним, Вы писали:

А>Понятно, вот только у меня компоненты возвращают ADODB.Recordset-ы, в асп я их коневертаю в хмл — получаю не только данные но и схему для них... а ведь схема то по идее можно хранить статически на клиенте и по сети одно и тоже не гонять... как же мне быть? как генерить xml из рекордсетов?


Вот только вчера использовал:


' получаем rs
........
Set rs = Comm.Execute

' преобразуем его в XML
set xml=convertRsToXML(rs)

' на сервере производим XSLT преобразование исходного XML в требуемый формат
' здесь folder - итоговое название узлов
str="<root>"&xml.transformNode(getXSL_For("folder"))&"</root>"

' отправляем XML клиенту
response.write str


'================ ФУНКЦИИ =================================
function getXSL_For(name)
    dim xsl, result
    result ="<xsl:stylesheet xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" xmlns:z=""#RowsetSchema"" version=""1.0"">"&_
            "<xsl:output method=""html""/><xsl:template match=""z:row""><xsl:element name="""+name+"""><xsl:copy-of select=""@*""/></xsl:element></xsl:template>"&_
            "</xsl:stylesheet>"
    set xsl = Server.CreateObject("Msxml2.FreeThreadedDOMDocument")
    xsl.LoadXML(result)
    set getXSL_For=xsl
    set xsl=Nothing
end function

function convertRsToXML(inRS)
    dim xml
    set xml = Server.CreateObject("Msxml2.FreeThreadedDOMDocument")
    inRS.Save xml, adPersistXML    
    set convertRsToXML = xml
end function



в результате из исходного XML типа:

<xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
    <s:Schema id="RowsetSchema">
        .........
    </s:Schema>
    <rs:data>
        <z:row Tag="1" id="{00000000-0000-0000-0000-000000000001}" Name="Новости" Published="True" SOrder="0" Level="0"/>
        <z:row Tag="1" id="{00000000-0000-0000-0000-000000000002}" Name="Обо мне" Published="True" SOrder="1" Level="0"/>
        .........
    </rs:data>
</xml>


мы получаем и отправляем клиенту XML следующего вида:

<root>
  <folder Tag="1" id="{00000000-0000-0000-0000-000000000001}" Name="Новости" Published="True" SOrder="0" Level="0"></folder>
  <folder Tag="1" id="{00000000-0000-0000-0000-000000000002}" Name="Обо мне" Published="True" SOrder="1" Level="0"></folder>
  ...
</root>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.