<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Sung-Chi&#039;s Blog - Technology category</title>
  <link>http://www.ehospitalityasia.com/A2ABlog/categories/3/</link>
  <description>e-Platform for RFID-enabled e-Business and AOLA-enabled Mathematics Education</description>
  <language>en</language>
  <copyright>Sung-Chi Chu</copyright>
  <lastBuildDate>Sat, 12 Apr 2008 10:16:00 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  <image>
    <url>http://pebble.sourceforge.net/common/images/powered-by-pebble.gif</url>
    <title>Sung-Chi&#039;s Blog (Technology category)</title>
    <link>http://www.ehospitalityasia.com/A2ABlog/</link>
  </image>
  
  
  <item>
    <title>Visibility in Supply Chains</title>
    <link>http://www.ehospitalityasia.com/A2ABlog/2008/03/28/1206689400000.html</link>
    
      
      
        <description>
          How do we define &#039;visibility&#039; in supply chains?&lt;p&gt;&lt;a href=&#034;http://www.ehospitalityasia.com/A2ABlog/2008/03/28/1206689400000.html&#034;&gt;Read more...&lt;/a&gt;&lt;/p&gt;
        </description>
      
    
    
    
    <category>Technology</category>
    
    <category>RFID</category>
    
    <comments>http://www.ehospitalityasia.com/A2ABlog/2008/03/28/1206689400000.html#comments</comments>
    <guid isPermaLink="true">http://www.ehospitalityasia.com/A2ABlog/2008/03/28/1206689400000.html</guid>
    <pubDate>Fri, 28 Mar 2008 07:30:00 GMT</pubDate>
  </item>
  
  <item>
    <title>Linking ActivityML to Mathematical Web Services</title>
    <link>http://www.ehospitalityasia.com/A2ABlog/2007/08/25/1188013696381.html</link>
    
      
        <description>
          &lt;p&gt;Go directly to the AXIS2_HOME/samples/quickstart according to the &#039;Deploying POJOs&#039; section, &#039;ant&#039; was built (mainly un-zip/un-tar the downloaded package - version 1.7.0 and set the paths accordingly) and the build was successful.&lt;br/&gt;&lt;br/&gt;
The WSDL file was built and so is the StockQuoteService.aar. References to &#039;localhost:8080&#039; in the WSDL file were modified to point to the real domainname.  I don&#039;t think it has any effect with respect to using the StockQuote service.
&lt;/p&gt;
&lt;p&gt;
Service &lt;strong&gt;saas001&lt;/strong&gt;, based on the StockQuote Service, was deployed successfully after fixing some typos in the WSDL file.  The service provides a conversion from an IpAddress to the Country of which this IpAddress is assigned by ICANN as update to a certain date when the database is created.  Of course, there is no database associated at this time.
&lt;/p&gt;
&lt;p&gt;
Next step is to deploy the other samples in the distribution, and then slowly pick up the finer details of axis2 (e.g., how to add the XSL for the responses)
&lt;/p&gt;

        </description>
      
      
    
    
    
    <category>Technology</category>
    
    <category>AOLA</category>
    
    <comments>http://www.ehospitalityasia.com/A2ABlog/2007/08/25/1188013696381.html#comments</comments>
    <guid isPermaLink="true">http://www.ehospitalityasia.com/A2ABlog/2007/08/25/1188013696381.html</guid>
    <pubDate>Sat, 25 Aug 2007 03:48:16 GMT</pubDate>
  </item>
  
  <item>
    <title>Linking ActivityML to Mathematical Web Services</title>
    <link>http://www.ehospitalityasia.com/A2ABlog/2007/08/23/1187872757153.html</link>
    
      
        <description>
          &lt;p&gt;So many technology items to piece together before a service can be designed and &#039;made&#039;.  I am following the Quick Start Guide 
&lt;a href=&#034;http://ws.apache.org/axis2/1_3/quickstartguide.html&#034; target=&#034;_blank&#034;&gt;here&lt;/a&gt;:
&lt;ul&gt;
&lt;li&gt;A 4G IBM Blade Center Unit with dual processors (Xeon&#039;s)&lt;/li&gt;
&lt;li&gt;RedHat&lt;/li&gt;
&lt;li&gt;Tomcat 5.5.17&lt;/li&gt;
&lt;li&gt;JDK 1.5.0_07&lt;/li&gt;
&lt;li&gt;axis2-1.3&lt;/li&gt;
&lt;li&gt;environment variable AXIS2_HOME points to /opt/axis2&lt;/li&gt;
&lt;li&gt;compile the simple saas001.java based on the StockQuoteService at /opt/src&lt;/li&gt;
&lt;li&gt;at /opt/src, do this&lt;br/&gt;&lt;br/&gt;
&lt;font face=&#034;Courier&#034; color=&#034;red&#034;&gt;
/opt/axis2/bin/java2wsdl.sh -cp . -cn A2A.computeEngine.services.algebra.saas001 -of saas001.wsdl&lt;/font&gt;
&lt;br/&gt;&lt;br/&gt;
&lt;/li&gt;
&lt;li&gt;the saas001.wsdl is generated at 
&lt;font color=&#034;blue&#034;&gt;/opt/src&lt;/font&gt;. Not sure where this WSDL file should go.  In principle, this WSDL exposes the service for the broker to locate the service on behalf of a client.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
And part of the WSDL file (raw; we need to modify some areas to reflect the true environment, e.g., domainname vs localhost):
&lt;br/&gt;
&lt;pre&gt;
&amp;lt;?xml version=&#034;1.0&#034; encoding=&#034;UTF-8&#034;?&amp;gt;
&amp;lt;wsdl:definitions
  xmlns:wsdl=&#034;http://schemas.xmlsoap.org/wsdl/&#034;
  xmlns:mime=&#034;http://schemas.xmlsoap.org/wsdl/mime/&#034;
  xmlns:ns0=&#034;http://algebra.services.computeEngine.A2A&#034; 
  xmlns:soap12=&#034;http://schemas.xmlsoap.org/wsdl/soap12/&#034; 
  xmlns:http=&#034;http://schemas.xmlsoap.org/wsdl/http/&#034; 
  xmlns:ns1=&#034;http://org.apache.axis2/xsd&#034; 
  xmlns:wsaw=&#034;http://www.w3.org/2006/05/addressing/wsdl&#034; 
  xmlns:xs=&#034;http://www.w3.org/2001/XMLSchema&#034; 
  xmlns:soap=&#034;http://schemas.xmlsoap.org/wsdl/soap/&#034; 
  targetNamespace=&#034;http://algebra.services.computeEngine.A2A&#034;&amp;gt;
    &amp;lt;wsdl:types&amp;gt;
        &amp;lt;xs:schema xmlns:ns=&#034;http://algebra.services.computeEngine.A2A&#034; 
  attributeFormDefault=&#034;qualified&#034; 
  elementFormDefault=&#034;qualified&#034; 
  targetNamespace=&#034;http://algebra.services.computeEngine.A2A&#034;&amp;gt;
            &amp;lt;xs:element name=&#034;getCountry&#034;&amp;gt;
                &amp;lt;xs:complexType&amp;gt;
                    &amp;lt;xs:sequence&amp;gt;
                        &amp;lt;xs:element minOccurs=&#034;0&#034; name=&#034;param0&#034; nillable=&#034;true&#034; type=&#034;xs:string&#034;/&amp;gt;
                    &amp;lt;/xs:sequence&amp;gt;
                &amp;lt;/xs:complexType&amp;gt;
            &amp;lt;/xs:element&amp;gt;
            &amp;lt;xs:element name=&#034;getCountryResponse&#034;&amp;gt;
                &amp;lt;xs:complexType&amp;gt;
                    &amp;lt;xs:sequence&amp;gt;
                        &amp;lt;xs:element minOccurs=&#034;0&#034; name=&#034;return&#034; nillable=&#034;true&#034; type=&#034;xs:string&#034;/&amp;gt;
                    &amp;lt;/xs:sequence&amp;gt;
                &amp;lt;/xs:complexType&amp;gt;
            &amp;lt;/xs:element&amp;gt;
            &amp;lt;xs:element name=&#034;update&#034;&amp;gt;
                &amp;lt;xs:complexType&amp;gt;
                    &amp;lt;xs:sequence&amp;gt;
                        &amp;lt;xs:element minOccurs=&#034;0&#034; name=&#034;param0&#034; nillable=&#034;true&#034; type=&#034;xs:string&#034;/&amp;gt;
                        &amp;lt;xs:element minOccurs=&#034;0&#034; name=&#034;param1&#034; nillable=&#034;true&#034; type=&#034;xs:string&#034;/&amp;gt;
                    &amp;lt;/xs:sequence&amp;gt;
                &amp;lt;/xs:complexType&amp;gt;
            &amp;lt;/xs:element&amp;gt;
        &amp;lt;/xs:schema&amp;gt;
    &amp;lt;/wsdl:types&amp;gt;
    &amp;lt;wsdl:message name=&#034;updateRequest&#034;&amp;gt;
        &amp;lt;wsdl:part name=&#034;parameters&#034; element=&#034;ns0:update&#034;/&amp;gt;
    &amp;lt;/wsdl:message&amp;gt;
    &amp;lt;wsdl:message name=&#034;getCountryRequest&#034;&amp;gt;
        &amp;lt;wsdl:part name=&#034;parameters&#034; element=&#034;ns0:getCountry&#034;/&amp;gt;
    &amp;lt;/wsdl:message&amp;gt;
    &amp;lt;wsdl:message name=&#034;getCountryResponse&#034;&amp;gt;
        &amp;lt;wsdl:part name=&#034;parameters&#034; element=&#034;ns0:getCountryResponse&#034;/&amp;gt;
    &amp;lt;/wsdl:message&amp;gt;
    &amp;lt;wsdl:portType name=&#034;saas001PortType&#034;&amp;gt;
        &amp;lt;wsdl:operation name=&#034;update&#034;&amp;gt;
            &amp;lt;wsdl:input message=&#034;ns0:updateRequest&#034; wsaw:Action=&#034;urn:update&#034;/&amp;gt;
        &amp;lt;/wsdl:operation&amp;gt;
        &amp;lt;wsdl:operation name=&#034;getCountry&#034;&amp;gt;
            &amp;lt;wsdl:input message=&#034;ns0:getCountryRequest&#034; wsaw:Action=&#034;urn:getCountry&#034;/&amp;gt;
            &amp;lt;wsdl:output message=&#034;ns0:getCountryResponse&#034; wsaw:Action=&#034;urn:getCountryResponse&#034;/&amp;gt;
        &amp;lt;/wsdl:operation&amp;gt;
    &amp;lt;/wsdl:portType&amp;gt;
    &amp;lt;wsdl:binding name=&#034;saas001SOAP11Binding&#034; type=&#034;ns0:saas001PortType&#034;&amp;gt;
        &amp;lt;soap:binding transport=&#034;http://schemas.xmlsoap.org/soap/http&#034; style=&#034;document&#034;/&amp;gt;
        &amp;lt;wsdl:operation name=&#034;update&#034;&amp;gt;
            &amp;lt;soap:operation soapAction=&#034;urn:update&#034; style=&#034;document&#034;/&amp;gt;
            &amp;lt;wsdl:input&amp;gt;
                &amp;lt;soap:body use=&#034;literal&#034;/&amp;gt;
            &amp;lt;/wsdl:input&amp;gt;
        &amp;lt;/wsdl:operation&amp;gt;
        &amp;lt;wsdl:operation name=&#034;getCountry&#034;&amp;gt;
            &amp;lt;soap:operation soapAction=&#034;urn:getCountry&#034; style=&#034;document&#034;/&amp;gt;
            &amp;lt;wsdl:input&amp;gt;
                &amp;lt;soap:body use=&#034;literal&#034;/&amp;gt;
            &amp;lt;/wsdl:input&amp;gt;
            &amp;lt;wsdl:output&amp;gt;
                &amp;lt;soap:body use=&#034;literal&#034;/&amp;gt;
            &amp;lt;/wsdl:output&amp;gt;
        &amp;lt;/wsdl:operation&amp;gt;
    &amp;lt;/wsdl:binding&amp;gt;
    &amp;lt;wsdl:binding name=&#034;saas001SOAP12Binding&#034; type=&#034;ns0:saas001PortType&#034;&amp;gt;
        &amp;lt;soap12:binding transport=&#034;http://schemas.xmlsoap.org/soap/http&#034; style=&#034;document&#034;/&amp;gt;
        &amp;lt;wsdl:operation name=&#034;update&#034;&amp;gt;
            &amp;lt;soap12:operation soapAction=&#034;urn:update&#034; style=&#034;document&#034;/&amp;gt;
            &amp;lt;wsdl:input&amp;gt;
                &amp;lt;soap12:body use=&#034;literal&#034;/&amp;gt;
            &amp;lt;/wsdl:input&amp;gt;
        &amp;lt;/wsdl:operation&amp;gt;
        &amp;lt;wsdl:operation name=&#034;getCountry&#034;&amp;gt;
            &amp;lt;soap12:operation soapAction=&#034;urn:getCountry&#034; style=&#034;document&#034;/&amp;gt;
            &amp;lt;wsdl:input&amp;gt;
                &amp;lt;soap12:body use=&#034;literal&#034;/&amp;gt;
            &amp;lt;/wsdl:input&amp;gt;
            &amp;lt;wsdl:output&amp;gt;
                &amp;lt;soap12:body use=&#034;literal&#034;/&amp;gt;
            &amp;lt;/wsdl:output&amp;gt;
        &amp;lt;/wsdl:operation&amp;gt;
    &amp;lt;/wsdl:binding&amp;gt;
    &amp;lt;wsdl:binding name=&#034;saas001HttpBinding&#034; type=&#034;ns0:saas001PortType&#034;&amp;gt;
        &amp;lt;http:binding verb=&#034;POST&#034;/&amp;gt;
        &amp;lt;wsdl:operation name=&#034;update&#034;&amp;gt;
            &amp;lt;http:operation location=&#034;saas001/update&#034;/&amp;gt;
            &amp;lt;wsdl:input&amp;gt;
                &amp;lt;mime:content type=&#034;text/xml&#034; part=&#034;update&#034;/&amp;gt;
            &amp;lt;/wsdl:input&amp;gt;
        &amp;lt;/wsdl:operation&amp;gt;
        &amp;lt;wsdl:operation name=&#034;getCountry&#034;&amp;gt;
            &amp;lt;http:operation location=&#034;saas001/getCountry&#034;/&amp;gt;
            &amp;lt;wsdl:input&amp;gt;
                &amp;lt;mime:content type=&#034;text/xml&#034; part=&#034;getCountry&#034;/&amp;gt;
            &amp;lt;/wsdl:input&amp;gt;
            &amp;lt;wsdl:output&amp;gt;
                &amp;lt;mime:content type=&#034;text/xml&#034; part=&#034;getCountry&#034;/&amp;gt;
            &amp;lt;/wsdl:output&amp;gt;
        &amp;lt;/wsdl:operation&amp;gt;
    &amp;lt;/wsdl:binding&amp;gt;
    &amp;lt;wsdl:service name=&#034;saas001&#034;&amp;gt;
        &amp;lt;wsdl:port name=&#034;saas001SOAP11port_http&#034; binding=&#034;ns0:saas001SOAP11Binding&#034;&amp;gt;
            &amp;lt;soap:address location=&#034;http://localhost:8080/axis2/services/saas001&#034;/&amp;gt;
        &amp;lt;/wsdl:port&amp;gt;
        &amp;lt;wsdl:port name=&#034;saas001SOAP12port_http&#034; binding=&#034;ns0:saas001SOAP12Binding&#034;&amp;gt;
            &amp;lt;soap12:address location=&#034;http://localhost:8080/axis2/services/saas001&#034;/&amp;gt;
        &amp;lt;/wsdl:port&amp;gt;
        &amp;lt;wsdl:port name=&#034;saas001Httpport&#034; binding=&#034;ns0:saas001HttpBinding&#034;&amp;gt;
            &amp;lt;http:address location=&#034;http://localhost:8080/axis2/services/saas001&#034;/&amp;gt;
        &amp;lt;/wsdl:port&amp;gt;
    &amp;lt;/wsdl:service&amp;gt;
&amp;lt;/wsdl:definitions&amp;gt;

&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;
Ok, for each service, axis2 imposes a structure to be followed packaged in a &#039;aar&#039; file. In our case, we have:
&lt;br/&gt;
&lt;br/&gt;
&lt;pre&gt;

- saas001
   - META-INF
     - services.xml
   - lib
   - A2A
     - computerEngine
       - services
         - algebra
           - saas001.class
           
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;
The services.xml file should contain the following information:
&lt;br/&gt;&lt;br/&gt;
&lt;pre&gt;
&amp;lt;service name=&#034;saas001&#034; scope=&#034;application&#034;&amp;gt;
    &amp;lt;description&amp;gt;
        Conversion of IP to Country Service
    &amp;lt;/description&amp;gt;
    &amp;lt;messageReceivers&amp;gt;
        &amp;lt;messageReceiver
            mep=&#034;http://www.w3.org/2004/08/wsdl/in-only&#034;
    class=&#034;org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver&#034;/&amp;gt;
        &amp;lt;messageReceiver
            mep=&#034;http://www.w3.org/2004/08/wsdl/in-out&#034;
    class=&#034;org.apache.axis2.rpc.receivers.RPCMessageReceiver&#034;/&amp;gt;
    &amp;lt;/messageReceivers&amp;gt;
    &amp;lt;parameter name=&#034;ServiceClass&#034;&amp;gt;
        A2A.computerEngine.services.algebra.saas001
    &amp;lt;/parameter&amp;gt;
&amp;lt;/service&amp;gt;
&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;
The file at &lt;font color=&#034;#4D4C4B&#034;&gt;/opt/jakarta/webapps/axis2/WEB-INF/conf/axis2.xml&lt;/font&gt; is 
modified with the following specific (to my environment) information and other changes as a result:&lt;br/&gt;&lt;br/&gt;

&lt;ul&gt;
&lt;li&gt;I changed the password to username &#039;admin&#039; for the 
&lt;a href=&#034;http://blueberry.ccl.baf.cuhk.edu.hk/axis2/axis2-admin/&#034; target=&#034;_blank&#034;&gt;admin page&lt;/a&gt; to that 
the same as for &#039;aola&#039;.
&lt;/li&gt;
&lt;li&gt;
No change to /opt/jakarta/webapps/axis2/WEB-INF/web.xml for now. Axis2 repository path can be defined here.
&lt;/li&gt;
&lt;li&gt;
saas001.wsdl has been modified by replacing the &#039;localhost:8080&#039; references with &#039;blueberry.ccl.baf.cuhk.edu.hk&#039;;
there is a reference to Namespace of &#039;http://algebra.services.computeEngine.A2A&#039; that should be defined or changed.
&lt;/li&gt;
&lt;li&gt;Create the /opt/WebLOGs/ directory to hold the log4j logs 
(e.g., in /opt/jakarta/webapps/axis2/WEB-INF/classes/log4j.properties now points to /opt/WebLOGs/axis2.log)
&lt;/li&gt;
&lt;/ul&gt;
&lt;br/&gt;
I think I know what needs to be done, but let me try the basic setup first.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;STOP&lt;/strong&gt;, let me try the samples that come with the release...
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>Technology</category>
    
    <category>AOLA</category>
    
    <comments>http://www.ehospitalityasia.com/A2ABlog/2007/08/23/1187872757153.html#comments</comments>
    <guid isPermaLink="true">http://www.ehospitalityasia.com/A2ABlog/2007/08/23/1187872757153.html</guid>
    <pubDate>Thu, 23 Aug 2007 12:39:17 GMT</pubDate>
  </item>
  
  <item>
    <title>Linking ActivityML to Mathematical Web Services</title>
    <link>http://www.ehospitalityasia.com/A2ABlog/2007/08/22/1187785251087.html</link>
    
      
        <description>
          &lt;p&gt;
Taking a lesson plan and realize it as a portable XML-based document can now be done with the activityEditor.  With an activityML lesson, the AOLA environment now brings the lesson live in the ePlatform.  The next missing step is the discoverable mathematical services to render on-demand graphical mathematics (some form of dynamic mathematics) and to provide the computational engine for dynamic mathematics in real-time.&lt;/p&gt;
&lt;p&gt;In this posting, we learn how to use 
&lt;a href=&#034;http://ws.apache.org/axis2/&#034; target=&#034;_blank&#034;&gt;axis2&lt;/a&gt; to create an online environment to create a proof-of-concept Saas (software as a service) for AOLA mathematics learning.
&lt;/p&gt;
&lt;p&gt;The next few postings will be the deployment of a simple computational engine that provides Saas to an activityML lesson.&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>Technology</category>
    
    <category>AOLA</category>
    
    <comments>http://www.ehospitalityasia.com/A2ABlog/2007/08/22/1187785251087.html#comments</comments>
    <guid isPermaLink="true">http://www.ehospitalityasia.com/A2ABlog/2007/08/22/1187785251087.html</guid>
    <pubDate>Wed, 22 Aug 2007 12:20:51 GMT</pubDate>
  </item>
  
  <item>
    <title>Just Mathematics Symbols</title>
    <link>http://www.ehospitalityasia.com/A2ABlog/2006/05/01/1146464369883.html</link>
    
      
        <description>
          &lt;p&gt;
I am still struggling with technology for AOLA.  All I want is to allow any participant in the AOLA platform to key in a mathematics symbol (yes, let us start with just a symbol) and visually seeing the symbol right away (real-time) in the activity that he or she is creating using some Web-based tool.  HTML form fields (such as &#039;input&#039; or &#039;textarea&#039;) are out of the question since they are not mathematics-aware (or maths-aware).  So, I chose Java to create a maths-aware Web client (an applet) as if the participant is typing in text with embedded TeX-like formulae (e.g., $\sqrt..$).  As the closing balanced &#039;$&#039; is typed, the enclosed maths expression will be converted to a graphical image of the intended formula.  All I need is an &#039;&lt;em&gt;graphical mathematics equation generator&lt;/em&gt;&#039; built into the applet.  I don&#039;t have that &#039;&lt;em&gt;generator&lt;/em&gt;&#039; so I purchased an educational license of a software to be the &lt;em&gt;generator&lt;/em&gt; at the server side, NOT with the applet client.  That seems to be working ok for a proof of concept demo.
&lt;/p&gt;
&lt;p&gt;Anyhow, I adapt this development to the processing of ActivityML.  Briefly, a teacher wants to create an activity (a mathematics lesson, say, for K-12) via the activityEditor currently under development.  Once an activity is created, it can now be shared.  Anyone can &#039;use&#039; the activty via the activityViewer (not a good label, but will do for now).  Anyone including teachers that can adopt the activity to his or her own course environment, and students that are to take the activity as an lesson, an exercise, an assignment or as a test.  
&lt;/p&gt;
&lt;p&gt;
The activityViewer presents the activity ok (see Fig. 1).  Basically, the inforamtion is organized into &#034;&lt;strong&gt;tabs&lt;/strong&gt;&#034; of a &lt;em&gt;workPad&lt;/em&gt;.  Each tab contains either information, or a unit of activity (or activityUnit).    A unit can be, at this time, an exercise, an assignment or an assessment (test or exam).  In each activityUnit, a mathematics expression can be &lt;strong&gt;static&lt;/strong&gt;, or &lt;strong&gt;dynamic&lt;/strong&gt;.  The expression can be further explored or discussed, depending on the teacher who creates the activity.  From the participants&#039; point of view, that is to say that each mathematics expression has its own &#039;&lt;em&gt;usage attributes&lt;/em&gt;&#039; as a right-click menu.  Specifically, two key actions in the right-click menu are &#039;&lt;em&gt;explore&lt;/em&gt;&#039; and &#039;&lt;em&gt;evaluate&lt;/em&gt;&#039;.
&lt;/p&gt;
&lt;p&gt;
My work for the next couple months is simple Mathematical Web Services deployment to do both the &#039;explore&#039; and &#039;evaluate&#039;, or maybe I should start with the simple adoption of existing maths applets for &#039;explore.&#039;  Will see. Oh, I also need to find out how to do a enumerable list as the value of the attribute of an XML element.  That is, how to specify in XSD this:
&lt;br&gt;
&lt;br&gt;
&amp;lt;activity right-click=&#034;explore, help, discuss&#034; /&amp;gt;
&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&#034;http://www.sungchichu.com:8080/A2ABlog/Images/activityViewer001.png&#034; target=&#034;_blank&#034;&gt;&lt;img src=&#034;Images/activityViewer001TN.png&#034;&gt;&lt;/a&gt;&lt;br&gt;
Figure 1. eActivity WorkPad.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>Technology</category>
    
    <category>AOLA</category>
    
    <comments>http://www.ehospitalityasia.com/A2ABlog/2006/05/01/1146464369883.html#comments</comments>
    <guid isPermaLink="true">http://www.ehospitalityasia.com/A2ABlog/2006/05/01/1146464369883.html</guid>
    <pubDate>Mon, 01 May 2006 06:19:29 GMT</pubDate>
  </item>
  
  </channel>
</rss>
