| 1) | 
					XML data encapsulation within XML itself-- XML is used 
							as a special means of cross-platform data exchange and RPC via SOAP. It 
							therefore makes sense that the data should be encapsulated in XML itself so 
							that the data and the means of encapsulation can be secured, accessed and 
							transported as an unit within a logical tier. Plus, it also makes sense to 
							secure the XML data within the same tier without a reliance on other 
							technologies: Java and CORBA, C# and .NET, VB or C++ and COM. All of these 
							existing methods enforce that the XML clients (the Java and CORBA, et. al.) 
							must know the details of the XML data and manipulate it directly. On 
							theoretical grounds this undermines the integrity of the XML data as is since 
							it does not stand alone. On practical grounds this means that the 
							cross-platform benefit of transporting the XML data and its encapsulating XML 
							objects is not there at all. In short, Superx++ objects package XML natively. Why is 
							this so? because Superx++ objects are also XML. | 
				
				
					| 2) | 
					A neat benefit also of the XML encapsulation that Superx++ 
							offers is that the XML clients can remain unchanged. This is because they will 
							be invoking Superx++ programs which are also XML. So nothing on the XML client side 
							needs to change. | 
				
				
					| 3) | 
					The automatic benefit that you get from Superx++ use is 
							that it allows XML data to be adaptive! This is very important in the dynamic 
							systems we have today and also for research in evolutionary systems. This is 
							possible because the Superx++ objects (which are XML) provide the programmatic logic 
							to modify the appearance of the XML data to the XML client based on run-time 
							conditions. | 
				
				
					| 4) | 
					Let's face it: nowadays without Superx++, to manipulate XML 
							to any sufficient programmatic degree (with any sort of ease) you cannot use 
							the XML technologies, such as XSLT, XSLFO, XPATH, XQUERY, etc. These all 
							require a fair amount of complexity. Programmers have recognized this already 
							and that is why they turn to Java, .NET, and other language/frameworks to 
							manipulate XML data. Although this is a practical decision that seems logical, 
							it is not a step in the right direction. This is because it violates the 
							integrity of the XML data with invasive access and manipulation of non-XML 
							processes. A better model which is also practical is to use Superx++. Superx++ has a 
							syntax that is easy to learn and quite understandable. If you have used C, C++, 
							C#, Java or most other high level languages then Superx++ will not be hard to 
							master. This means that you can very quickly use Superx++ to access and manipulate 
							XML data in documents or fragments. And at the same time, while you are doing 
							this with Superx++ you are not violating the integrity of the XML data because that 
							data is kept within the XML layer, wrapped safely within the Superx++ objects. 
							Therefore, there is no reason why these Superx++ objects cannot be sent via HTTP to 
							some remote destination, as an unit and still preserve the encapsulation. | 
				
				
					| 5) | 
					By the way, there is another benefit of XML 
							encapsulation here, and that is that the Superx++ objects provide a context for the 
							XML data. A context is necessary in any system to make informational sense out 
							of data, which is inherently meaningless without a context. Imagine a system 
							with Java (or any other language excluding Superx++) and XML. That system taken as a 
							whole has a context because you can tell what the data is and what it is for 
							and how it is used. However, the current thought about transporting the XML 
							data to remote destinations is to take the XML data and ship it off via HTTP or 
							whatever. This move breaks the context. The destination can only really know 
							what the XML data means and what to do with it, if and only if the destination 
							is built with a knowledge of the source system. This is bad! The reasons why 
							this is bad are: 
							
								
									| i) | 
									It forces the context of the source system to remain 
											constant and in sync with the destination system. Therefore the company in 
											charge of the source system cannot modify the form that the XML data takes 
											without consulting the destination company. This means that the two companies 
											must agree and be in sync or the whole model breaks down. This is expensive in 
											terms of human resources, time, money and programmer expertise! | 
								 
								
									| ii) | 
									If the source company is bought by another entity who 
											want to change the XML format of the data, then the destination company will 
											not be able to make sense of the data any longer. That is, there is no 
											long-term stability of the XML context! | 
								 
							 
							Some will object at this point and say that XML schemas could provide the 
							necessary context. I would agree to a certain point. The schemas can provide 
							lexical (not informational) definition of the XML format, but if the format 
							were to change then the schema must also change. This therefore brings us back 
							to square one: the source and the destination must BOTH make changes to adapt 
							to changes in the XML format.
							The good thing about Superx++ encapsulation is that the entire Superx++ object can be 
							transported from the source to the destination as an unit. This object will 
							expose a public interface that is more stable and long-term than the tenuous 
							coincidental agreement on the XML format shown above between the source and 
							destination. This public interface is what the destination system (that is, the 
							XML clients on the destination which may be Java or other language programs) 
							will invoke to access the XML data via the secure interface of the Superx++ object. 
							Therefore if the source company wants to change the XML format then they can do 
							so while leaving the public interface the same and the impact on the 
							destination will be ZERO! This means that there is less expense for any change 
							on the source in terms of human resources, time, money and programmer 
							expertise! 
					 | 
				
				
					| 6) | 
					Another benefit of Superx++ is that it allows object 
							oriented features that other popular languages do not. For example, class 
							redefinition. Class redefinition is the ability of a class to be redefined or 
							evolve dynamically at run-time. This evolution has the impact of changing the 
							behaviour of objects that were already instantiated, and of course the 
							subsequently instantiated objects take on the new form. This is useful for 
							modeling changes to entities in the real world. | 
				
				
					| 7) | 
					Superx++ also allows zero-cost XML serialization. By this I 
							mean that XML serialization is not implemented by means of the use of special 
							classes as is the case with the .NET languages or Java. Rather, it is founded 
							on a simple premise that sets Superx++ apart from these other languages. Superx++ 
							maintains objects in memory as XML! Therefore an XML node is a Superx++ object and 
							a Superx++ object is an XML node. The ramifications of this are that serializing an 
							Superx++ object or object tree really means simply writing the data to a file. 
							Deserialization is also merely constructing an object out of the XML in a file, 
							which is also done in a single instruction. This makes the whole matter of XML 
							serialization easy for programmers to grasp and use and at the same time it 
							preserves the logical paradigm that we have established: i.e. Superx++ is truly XML 
							through and through! | 
				
				
					| 8) | 
					Superx++ allows XML data to be processed as Superx++ code and 
							Superx++ code can be manipulated as XML data. This allows a high degree of 
							flexibility in adaptive and evolutionary programming. This is important-- a lot 
							of research has and is being done in the realm of adaptive programming. Superx++ 
							implements some useful features to allow this. |