CLOSE DATABASES all CLEAR con=SQLCONNECT("LocalServer") TEXT TO cSQL NOSHOW SELECT 1 as Tag, NULL as Parent, Customers.CustomerID as [Customer!1!CustomerID], NULL as [Order!2!OrderID!element], NULL as [Order!2!OrderDate], NULL as [Order!2!ShipName], NULL as [Order_details!3!ProductID], NULL as [Order_details!3!UnitPrice], NULL as [Order_details!3!Quantity] FROM Customers WHERE Customers.CustomerID = 'CACTU' UNION ALL SELECT 2, 1, Customers.CustomerID, Orders.OrderID, Orders.OrderDate, Orders.ShipName, NULL as [Order_details!3!ProductID], NULL as [Order_details!3!UnitPrice], NULL as [Order_details!3!Quantity] FROM Customers, Orders WHERE Customers.CustomerID = Orders.CustomerID AND Customers.CustomerID = 'CACTU' AND Orders.OrderID = 10521 UNION ALL SELECT 3, 2, Customers.CustomerID as [Customer!1!CustomerID], Orders.OrderID, Orders.OrderDate, Orders.ShipName, Order_details.ProductID, Order_details.UnitPrice, Order_details.Quantity FROM Customers, Orders, [Order Details] Order_details WHERE Orders.OrderID = Order_details.OrderID AND Customers.CustomerID = 'CACTU' AND Orders.OrderID = 10521 FOR XML EXPLICIT, xmldata ENDTEXT ?SQLEXEC(con,"use northwind") LOCAL oCA as CursorAdapter oCA=CREATEOBJECT("CursorAdapter") oCA.DataSource=con oCA.DataSourceType="ODBC" oCA.SelectCmd=cSQL oCA.CursorSchema="XMLData M" ?oCA.CursorFill(.T.) SQLDISCONNECT(con) *add root element cXML="<ROOT>" SCAN cXML = cXML + XMLData ENDSCAN cXML = cXML + "</ROOT>" * tables are nested, but schema doesn't show that * need to fix the schema cXML=STRTRAN(cXML,'<AttributeType name="CustomerID"',; '<element type="Order" maxOccurs="*" /><AttributeType name="CustomerID"',1,1) cXML=STRTRAN(cXML,'<AttributeType name="OrderDate"',; '<element type="Order_details" maxOccurs="*" /><AttributeType name="OrderDate"',1,1) LOCAL oXA as XMLAdapter, oXT as XMLTable oXA=CREATEOBJECT("XMLAdapter") oXA.LoadXML(cXML) FOR EACH oXT IN oXA.Tables oXT.ToCursor() SELECT (oXT.Alias) LIST NEXTThanks,