Customize XML serialization with WSName and XMLName
Use XML serialization attributes to customize serialization at runtime and improve the readability of the XML output.
Formatting XML output with WSName and XMLName
This sample REST function returns a list of users to the client in XML format. The
        function's return value defines a dynamic array of 
      profileType that is set
        with the following attributes: WSName="All_users_list"sets the root node for the output to<All_users_list>.WSMedia = "application/xml"sets the output to XML.XMLName="User"maps each element of theprofileTyperecord with the<User>tag.- The 
XMLOptionalattribute specifies that<User>elements with NULL values are omitted from the XML document. For other options of working with NULL values, see the XMLNillable attribute. 
If you do not use the WSName and XMLName
        attributes to format the XML output, names derived from DVM names such as "rv0", "rv1", and
        so on are used.
TYPE profileType RECORD
     id INTEGER,
     name VARCHAR(100),
     email VARCHAR(255),
     ccode VARCHAR(3)
     # ...
   END RECORD
PUBLIC FUNCTION getUsersList()
  ATTRIBUTES (WSGet,
              WSPath = "/users/xml",
              WSDescription="Get list of users and output in XML format"
              )
  RETURNS (
    DYNAMIC ARRAY ATTRIBUTES(WSName = "All_users_list",
                            WSMedia = "application/xml") OF profileType
                            ATTRIBUTES(XMLName = "User", XMLOptional)
          )
    DEFINE usersList DYNAMIC ARRAY OF profileType
    DEFINE i INTEGER = 1
    # code to get users
     DECLARE userCurs CURSOR FOR SELECT * FROM users ORDER BY users.name
     FOREACH userCurs INTO arr[i].*
       LET i = i+1
     END FOREACH
     CALL arr.deleteElement(arr.getLength())
     # Remove the empty element implied by reference in FOREACH loop
  RETURN usersList
END FUNCTION