Skip to main content

%Projection.XML

This projection class maintains the subclass information needed to support that XML allows
1) the use of a derived type wherever a type may appear using the xsi:type mechanism and
2) the indication of the element type for choice constructs by the element name.

In order to accomplish the above, the XML projection maintains information about each subclass of an XML enabled class. This subclass information is updated for the superclass whenever one of these subclasses is compiled. If the superclass is in the same database as the class being compiled, then this information is maintained in ^oddCOM(supername,$$$cCLASSxmldata). If the superclass is mapped from another database (possibly a readonly database such as %CACHELIB), then the information must is maintained in the local database in ^oddXML(supername).

Structure of ^oddXML and ^oddCOM(supername,$$$cCLASSxmldata) is as follows:
^oddXML(supername,"c",classname)=$lb(elementName,type,summaryType)
^oddXML(supername,"n",elementName)=$lb(className,...)
^oddXML(supername,"t",type)=$lb(className,...)
^oddXML(supername,"s",summaryType)=$lb(className,...)
where classname is the subclass, elementName is the element name for choice lists,
type is the XML type name and summaryType is the XML type name for the summary class.
Note that this information is updated for all supernames when a classname is compiled.

^oddXML (and not ^oddCOM) is also used to store an index of classes defined for each XML namespace.
^oddXML("-ns",namespace,classname)=""
^oddXML("-cns",classname)=namespace
where namespace is the XML namespace name and "-" stands for the null XML namespace for classes with no namespacee defined.
classname is the name of a class defined in this namespace.

^oddXML (and not ^oddCOM) is also used to store a mapping for binary SOAP support of remote class names to local class names based on the value of SOAPCLASSNAME being of the form serviceName:remoteClassname.
^oddXML("-cl",serviceName,remoteClassname)=localClassname
^oddXML("-cr",localClassname,serviceName)=remoteClassname
where serviceName is the name of the remote service
remoteClassname is the class name for the remote SOAP service
localClassname is the name of corresponding local class.

Inherited Members

Inherited Methods

FeedbackOpens in a new tab