Здравствуйте, Аноним, Вы писали:
А>Понятно, вот только у меня компоненты возвращают 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>