You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by "Yang Wang (JIRA)" <tu...@ws.apache.org> on 2008/05/19 06:43:55 UTC

[jira] Created: (TUSCANY-2326) attribute in xml schema becomes element when g enetate xsd from SDO

attribute in xml schema becomes element when  g enetate xsd from SDO 
---------------------------------------------------------------------

                 Key: TUSCANY-2326
                 URL: https://issues.apache.org/jira/browse/TUSCANY-2326
             Project: Tuscany
          Issue Type: Bug
          Components: C++ SDO
    Affects Versions: Cpp-M3
         Environment: Tuscany SDO C++ M3 Source Release for Windows
            Reporter: Yang Wang
             Fix For: Cpp-M3


I am a user of Tuscany SDO C++ , but I entercounter a problem when I use it.

  my problem's description:

 this is my xml schema: in file msg.xsd

  <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sdo="commonj.sdo"  xmlns:rcmq="RCMQ" targetNamespace="RCMQ">
 <xsd:element name="rcmqMsg" type="rcmq:RCMQMessage"/>
 <xsd:complexType name="RCMQMessage">
  <xsd:sequence>
   <xsd:element name="messageID" type="xsd:string"/>
   <xsd:element name="correlationID" type="xsd:string"/>
  </xsd:sequence>
  <xsd:attribute name="wy" type="xsd:string"/>
 </xsd:complexType>
</xsd:schema>

my code:

 #include <commonj/sdo/SDO.h>

using namespace commonj::sdo;
using namespace std;

void main()  

 {

       DataFactoryPtr mdg  = DataFactory::getDataFactory();
  
        XSDHelperPtr myXSDHelper = HelperProvider::getXSDHelper(mdg);
        const char* m=myXSDHelper->defineFile("msg.xsd");
        TypeList tl = mdg->getTypes();
        char* xsdStr=myXSDHelper->generate(tl,"RCMQ");
        cout<<xsdStr;

}

the result of  running:

<xsd:schema xmlns:sdo="commonj.sdo" xmlns:sdoxml="commonj.sdo/xml" xmlns:tns="RCMQ" targetNamespace="RCMQ" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <xsd:element name="rCMQMessage" type="RCMQMessage"/>
 <xsd:complexType name="RCMQMessage">
  <xsd:sequence>
   <xsd:element name="messageID" type="xsd:String" minOccurs="0"/>
   <xsd:element name="correlationID" type="xsd:String" minOccurs="0"/>
   <xsd:element name="wy" type="xsd:String"/>
  </xsd:sequence>
  
 </xsd:complexType>
</xsd:schema>

   I find the result is not consistent with the former schema,  the attribute in former schema becomes element in new schema.  In fact , they should be consistent.
   I download Tuscany SDO C++ M3 Source Release for Windows, which is the newest version at present. 
   I think there is a little bug in the sourcecode,  and I find out it and rectify this error, and resolve the problem.

 my way to solve:

rectify in the file : SDOSchemaSAX2Parser.cpp

  // ============================================================================
        // startAttribute
        // ============================================================================
        void SDOSchemaSAX2Parser::startAttribute(
            const SDOXMLString& localname,
            const SDOXMLString& prefix,
            const SDOXMLString& URI,
            const SAX2Namespaces& namespaces,
            const SAX2Attributes& attributes)
        {

            LOGINFO_1( INFO,"SchemaParser:startAttribute:%s",(const char*)localname);

            if (!bInSchema) return;

            PropertyDefinitionImpl thisProperty;
            
            thisProperty.isElement = false;
            thisProperty.isContainment = false;  // this is my rectification. I add this statement.
           
            
            setName(attributes,
                thisProperty.name,
                thisProperty.localname);

            thisProperty.namespaceURI = schemaInfo.getTargetNamespaceURI();

            setType(thisProperty, attributes, namespaces);
            
            setCurrentProperty(thisProperty);                    
        }

   Your Project of SDO C++ is very good and perfect, athough it has some little problems. I  hope you can pay attention to my problem and resolve it , my rectification is just a  reference.



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (TUSCANY-2326) attribute in xml schema becomes element when g enetate xsd from SDO

Posted by "Yang Wang (JIRA)" <tu...@ws.apache.org>.
     [ https://issues.apache.org/jira/browse/TUSCANY-2326?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Yang Wang resolved TUSCANY-2326.
--------------------------------

    Resolution: Fixed

  rectify in the file : SDOSchemaSAX2Parser.cpp

  // ============================================================================
        // startAttribute
        // ============================================================================
        void SDOSchemaSAX2Parser::startAttribute(
            const SDOXMLString& localname,
            const SDOXMLString& prefix,
            const SDOXMLString& URI,
            const SAX2Namespaces& namespaces,
            const SAX2Attributes& attributes)
        {

            LOGINFO_1( INFO,"SchemaParser:startAttribute:%s",(const char*)localname);

            if (!bInSchema) return;

            PropertyDefinitionImpl thisProperty;
            
            thisProperty.isElement = false;
            thisProperty.isContainment = false; // this is my rectification.
           
            
            setName(attributes,
                thisProperty.name,
                thisProperty.localname);

            thisProperty.namespaceURI = schemaInfo.getTargetNamespaceURI();

            setType(thisProperty, attributes, namespaces);
            
            setCurrentProperty(thisProperty);                    
        }

> attribute in xml schema becomes element when  g enetate xsd from SDO 
> ---------------------------------------------------------------------
>
>                 Key: TUSCANY-2326
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-2326
>             Project: Tuscany
>          Issue Type: Bug
>          Components: C++ SDO
>    Affects Versions: Cpp-M3
>         Environment: Tuscany SDO C++ M3 Source Release for Windows
>            Reporter: Yang Wang
>             Fix For: Cpp-M3
>
>
> I am a user of Tuscany SDO C++ , but I entercounter a problem when I use it.
>   my problem's description:
>  this is my xml schema: in file msg.xsd
>   <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sdo="commonj.sdo"  xmlns:rcmq="RCMQ" targetNamespace="RCMQ">
>  <xsd:element name="rcmqMsg" type="rcmq:RCMQMessage"/>
>  <xsd:complexType name="RCMQMessage">
>   <xsd:sequence>
>    <xsd:element name="messageID" type="xsd:string"/>
>    <xsd:element name="correlationID" type="xsd:string"/>
>   </xsd:sequence>
>   <xsd:attribute name="wy" type="xsd:string"/>
>  </xsd:complexType>
> </xsd:schema>
> my code:
>  #include <commonj/sdo/SDO.h>
> using namespace commonj::sdo;
> using namespace std;
> void main()  
>  {
>        DataFactoryPtr mdg  = DataFactory::getDataFactory();
>   
>         XSDHelperPtr myXSDHelper = HelperProvider::getXSDHelper(mdg);
>         const char* m=myXSDHelper->defineFile("msg.xsd");
>         TypeList tl = mdg->getTypes();
>         char* xsdStr=myXSDHelper->generate(tl,"RCMQ");
>         cout<<xsdStr;
> }
> the result of  running:
> <xsd:schema xmlns:sdo="commonj.sdo" xmlns:sdoxml="commonj.sdo/xml" xmlns:tns="RCMQ" targetNamespace="RCMQ" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>  <xsd:element name="rCMQMessage" type="RCMQMessage"/>
>  <xsd:complexType name="RCMQMessage">
>   <xsd:sequence>
>    <xsd:element name="messageID" type="xsd:String" minOccurs="0"/>
>    <xsd:element name="correlationID" type="xsd:String" minOccurs="0"/>
>    <xsd:element name="wy" type="xsd:String"/>
>   </xsd:sequence>
>   
>  </xsd:complexType>
> </xsd:schema>
>    I find the result is not consistent with the former schema,  the attribute in former schema becomes element in new schema.  In fact , they should be consistent.
>    I download Tuscany SDO C++ M3 Source Release for Windows, which is the newest version at present. 
>    I think there is a little bug in the sourcecode,  and I find out it and rectify this error, and resolve the problem.
>  my way to solve:
> rectify in the file : SDOSchemaSAX2Parser.cpp
>   // ============================================================================
>         // startAttribute
>         // ============================================================================
>         void SDOSchemaSAX2Parser::startAttribute(
>             const SDOXMLString& localname,
>             const SDOXMLString& prefix,
>             const SDOXMLString& URI,
>             const SAX2Namespaces& namespaces,
>             const SAX2Attributes& attributes)
>         {
>             LOGINFO_1( INFO,"SchemaParser:startAttribute:%s",(const char*)localname);
>             if (!bInSchema) return;
>             PropertyDefinitionImpl thisProperty;
>             
>             thisProperty.isElement = false;
>             thisProperty.isContainment = false;  // this is my rectification. I add this statement.
>            
>             
>             setName(attributes,
>                 thisProperty.name,
>                 thisProperty.localname);
>             thisProperty.namespaceURI = schemaInfo.getTargetNamespaceURI();
>             setType(thisProperty, attributes, namespaces);
>             
>             setCurrentProperty(thisProperty);                    
>         }
>    Your Project of SDO C++ is very good and perfect, athough it has some little problems. I  hope you can pay attention to my problem and resolve it , my rectification is just a  reference.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.