in JSLib/src/odata-xml.js [732:775]
var xmlNewODataDataElement = function (dom, name, value, dataItemMetadata, dataItemModel, model) {
/// <summary>Creates a new DOM element for a data item in an entry, complex property, or collection property.</summary>
/// <param name="dom">DOM document used for creating the new DOM Element.</param>
/// <param name="name" type="String">Data item name.</param>
/// <param name="value" optional="true" mayBeNull="true">Value of the data item, if any.</param>
/// <param name="dataItemMetadata" type="Object" optional="true">Object containing metadata about the data item.</param>
/// <param name="dataItemModel" type="Object" optional="true">Object describing the data item in an OData conceptual schema.</param>
/// <param name="model" type="Object" optional="true">Object describing an OData conceptual schema.</param>
/// <returns type="Object">
/// Object containing the new DOM element in the appropriate namespace for the data item and the
/// required data service version for it.
/// </returns>
var typeName = dataItemTypeName(value, dataItemMetadata, dataItemModel);
if (isPrimitive(value)) {
return xmlNewODataEdmProperty(dom, name, value, typeName || EDM_STRING);
}
var isGeography = isGeographyEdmType(typeName);
if (isGeography || isGeometryEdmType(typeName)) {
return xmlNewODataSpatialProperty(dom, name, value, typeName, isGeography);
}
if (isCollection(value, typeName)) {
return xmlNewODataCollectionProperty(dom, name, value, typeName, dataItemMetadata, dataItemModel, model);
}
if (isNamedStream(value)) {
return null;
}
// This may be a navigation property.
var navPropKind = navigationPropertyKind(value, dataItemModel);
if (navPropKind !== null) {
return null;
}
if (value === null) {
return xmlNewODataNullProperty(dom, name, typeName);
}
djsassert(isObject(value), "xmlNewODataEntryProperty - property '" + name + "' is not an object");
return xmlNewODataComplexProperty(dom, name, value, typeName, dataItemMetadata, dataItemModel, model);
};