How about *attr* (lowercase) On Wed, Mar 2, 2016 at 11:29 AM, Sohani Weerasinghe <[email protected]> wrote:
> I think it's better if we can use "ATR" instead of "ATT" > > Sohani Weerasinghe > Software Engineer > WSO2, Inc: http://wso2.com > > Mobile : +94 716439774 > Blog :http://christinetechtips.blogspot.com/ > Twitter : https://twitter.com/sohanichristine > > On Wed, Mar 2, 2016 at 11:25 AM, Sohani Weerasinghe <[email protected]> > wrote: > >> Hi All, >> >> When representing attributes in avro schema, according to [1] the >> suggested approach is to use @ as a prefix. >> >> Since avro name should start with [A-Za-z] and subsequently contain only >> [A-Za-z0-9_], shall we represent it as below (adding ATT as a prefix) >> >> "name" : "*ATT*_gender" >> >> [1] >> https://docs.google.com/spreadsheets/d/15eyRuxn9rFazULASqtB2DZaSAVznKqSNnIGrwvdpzic/edit?ts=56d5250b#gid=0 >> >> Sohani Weerasinghe >> Software Engineer >> WSO2, Inc: http://wso2.com >> >> Mobile : +94 716439774 >> Blog :http://christinetechtips.blogspot.com/ >> Twitter : https://twitter.com/sohanichristine >> >> On Wed, Mar 2, 2016 at 7:47 AM, Sohani Weerasinghe <[email protected]> >> wrote: >> >>> >>> Please find the attached image which represents the prefix in the tree >>> view >>> >>> Sohani Weerasinghe >>> Software Engineer >>> WSO2, Inc: http://wso2.com >>> >>> Mobile : +94 716439774 >>> Blog :http://christinetechtips.blogspot.com/ >>> Twitter : https://twitter.com/sohanichristine >>> >>> On Wed, Mar 2, 2016 at 7:45 AM, Sohani Weerasinghe <[email protected]> >>> wrote: >>> >>>> >>>> >>>> Sohani Weerasinghe >>>> Software Engineer >>>> WSO2, Inc: http://wso2.com >>>> >>>> Mobile : +94 716439774 >>>> Blog :http://christinetechtips.blogspot.com/ >>>> Twitter : https://twitter.com/sohanichristine >>>> >>>> On Wed, Mar 2, 2016 at 6:28 AM, Jasintha Dasanayake <[email protected]> >>>> wrote: >>>> >>>>> >>>>> >>>>> On Tue, Mar 1, 2016 at 9:07 PM, Sohani Weerasinghe <[email protected]> >>>>> wrote: >>>>> >>>>>> Thanks Nuwan for the response. >>>>>> >>>>>> When generating the avro schema by adding elements to the tree view, >>>>>> user can specify the namespace (xml namespace) with the prefix, so that >>>>>> when generating the the avro schema we can map the namespace to doc and >>>>>> prefix to the namespace in avro. >>>>>> >>>>> >>>>> Yes that's mapping is fine , somehow we need to show at least prefix >>>>> in the tree view otherwise user experience won't be nice since user have >>>>> to >>>>> check it explicitly while doing the mapping >>>>> >>>> >>>> Yes, I have implemented that and the prefix will be shown in the tree >>>> view. >>>> >>>>> >>>>> Thanks and Regards >>>>> /Jasintha. >>>>> >>>>>> >>>>>> Thanks, >>>>>> Sohani >>>>>> >>>>>> Sohani Weerasinghe >>>>>> Software Engineer >>>>>> WSO2, Inc: http://wso2.com >>>>>> >>>>>> Mobile : +94 716439774 >>>>>> Blog :http://christinetechtips.blogspot.com/ >>>>>> Twitter : https://twitter.com/sohanichristine >>>>>> >>>>>> On Tue, Mar 1, 2016 at 8:54 PM, Nuwan Pallewela <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Tue, Mar 1, 2016 at 7:34 PM, Sohani Weerasinghe <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> Hi All, >>>>>>>> >>>>>>>> If we consider an XML which has multiple namespaces as below , >>>>>>>> >>>>>>>> <root> >>>>>>>> <h:table xmlns:h="http://www.w3.org/TR/html4/"> >>>>>>>> <h:name>Asian Coffee Table</h:name> >>>>>>>> <h:width>74</h:width> >>>>>>>> <h:length>129</h:length> >>>>>>>> </h:table> >>>>>>>> <f:table xmlns:f="http://www.w3schools.com/furniture"> >>>>>>>> <f:name>African Coffee Table</f:name> >>>>>>>> <f:width>80</f:width> >>>>>>>> <f:length>120</f:length> >>>>>>>> </f:table> >>>>>>>> </root> >>>>>>>> >>>>>>>> The avro schema should be as follows , >>>>>>>> >>>>>>>> { >>>>>>>> "type" : "record", >>>>>>>> "name" : "root", >>>>>>>> "fields" : [ { >>>>>>>> "type" : "record", >>>>>>>> "name" : "tableRecord", >>>>>>>> * "doc" : "http://www.w3.org/TR/html4/ >>>>>>>> <http://www.w3.org/TR/html4/>",* >>>>>>>> "namespace" : "http://www.w3.org/TR/html4/" >>>>>>>> "fields" : [ { >>>>>>>> "name" : "name", >>>>>>>> "type" : [ "null", "string" ] >>>>>>>> "doc" : "http://www.w3.org/TR/html4/" >>>>>>>> } , { >>>>>>>> "name" : "width", >>>>>>>> "type" : [ "null", "int" ] >>>>>>>> },{ >>>>>>>> "name" : "length", >>>>>>>> "type" : [ "null", "int" ] >>>>>>>> }] >>>>>>>> }, { >>>>>>>> "type" : "record", >>>>>>>> "name" : "tableRecord", >>>>>>>> * "doc" : "http://www.w3schools.com/furniture >>>>>>>> <http://www.w3schools.com/furniture>",* >>>>>>>> "namespace" : "http://www.w3schools.com/furniture" >>>>>>>> "fields" : [ { >>>>>>>> "name" : "name", >>>>>>>> "type" : [ "null", "string" ] >>>>>>>> } , { >>>>>>>> "name" : "width", >>>>>>>> "type" : [ "null", "int" ] >>>>>>>> },{ >>>>>>>> "name" : "length", >>>>>>>> "type" : [ "null", "int" ] >>>>>>>> }] >>>>>>>> } ] >>>>>>>> } >>>>>>>> >>>>>>>> When representing this using the Visual DataMapper Editor, in order >>>>>>>> to differentiate the two records, we can add a namespace prefix to the >>>>>>>> name >>>>>>>> of the record as shown below. >>>>>>>> >>>>>>>> >>>>>>>> But when generating the Avro Schema, if we pass this value as the >>>>>>>> name of the node it throws *org.apache.avro.SchemaParseException: >>>>>>>> Illegal character in: y:tableRecord.* >>>>>>>> >>>>>>> >>>>>>> AVRO name should start with [A-Za-z] and subsequently contain only >>>>>>> [A-Za-z0-9_]. >>>>>>> So we can not pass name with namespace prefix. >>>>>>> >>>>>>>> >>>>>>>> So, if we use only the name (tableRecord, by removing the prefix) >>>>>>>> to create the avro schema, how are we going to differentiate the >>>>>>>> records >>>>>>>> separately when generating the mapping config? >>>>>>>> >>>>>>> >>>>>>> We should add above xml namespace prefix as the namespace of AVRO >>>>>>> record. Then two elements can be differentiated. >>>>>>> For Eg: >>>>>>> >>>>>>> { >>>>>>> "type" : "record", >>>>>>> "name" : "root", >>>>>>> "fields" : [ { >>>>>>> "type" : "record", >>>>>>> "name" : "tableRecord", >>>>>>> * "doc" : "http://www.w3.org/TR/html4/ >>>>>>> <http://www.w3.org/TR/html4/>",* >>>>>>> "namespace" : "N1", >>>>>>> "fields" : [ { >>>>>>> "name" : "name", >>>>>>> "type" : [ "null", "string" ], >>>>>>> "doc" : "http://www.w3.org/TR/html4/" >>>>>>> } , { >>>>>>> "name" : "width", >>>>>>> "type" : [ "null", "int" ], >>>>>>> "doc" : "http://www.w3.org/TR/html4/" >>>>>>> },{ >>>>>>> "name" : "length", >>>>>>> "type" : [ "null", "int" ], >>>>>>> "doc" : "http://www.w3.org/TR/html4/" >>>>>>> }] >>>>>>> }, { >>>>>>> "type" : "record", >>>>>>> "name" : "tableRecord", >>>>>>> * "doc" : "http://www.w3schools.com/furniture >>>>>>> <http://www.w3schools.com/furniture>",* >>>>>>> "namespace" : "N2", >>>>>>> "fields" : [ { >>>>>>> "name" : "name", >>>>>>> "type" : [ "null", "string" ], >>>>>>> *"doc" : "http://www.w3schools.com/furniture >>>>>>> <http://www.w3schools.com/furniture>"* >>>>>>> } , { >>>>>>> "name" : "width", >>>>>>> "type" : [ "null", "int" ] >>>>>>> *"doc" : "http://www.w3schools.com/furniture >>>>>>> <http://www.w3schools.com/furniture>"* >>>>>>> },{ >>>>>>> "name" : "length", >>>>>>> "type" : [ "null", "int" ], >>>>>>> *"doc" : "http://www.w3schools.com/furniture >>>>>>> <http://www.w3schools.com/furniture>"* >>>>>>> }] >>>>>>> } ] >>>>>>> } >>>>>>> >>>>>>> Then the full names of the two tableRecords will be N1.tableRecord >>>>>>> and N2.tableRecord and AVRO can differentiate these two fields. >>>>>>> >>>>>>>> >>>>>>>> eg: If we are to map a field in y:tableRecord with a field >>>>>>>> in y:tableRecord etc. How can we differentiate this? >>>>>>>> >>>>>>>> This usecase of having multiple namespaces can be displayed >>>>>>>> graphically in the Design view by appending a namespace prefix, but it >>>>>>>> seems this will have issues in generating the avro schema and the >>>>>>>> mapping >>>>>>>> config. >>>>>>>> >>>>>>> >>>>>>> Mapping configuration does not need to be aware of the namespaces as >>>>>>> long as they can be differentiate in the diagram. Output from the >>>>>>> mapping >>>>>>> will look into the output schema and will build the output message with >>>>>>> desired namespaces. >>>>>>> >>>>>>>> >>>>>>>> Your suggestions are highly appreciated. >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Sohani >>>>>>>> Sohani Weerasinghe >>>>>>>> Software Engineer >>>>>>>> WSO2, Inc: http://wso2.com >>>>>>>> >>>>>>>> Mobile : +94 716439774 >>>>>>>> Blog :http://christinetechtips.blogspot.com/ >>>>>>>> Twitter : https://twitter.com/sohanichristine >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> ---------------------------------------------------------- >>>>>>> >>>>>>> *Nuwan Chamara Pallewela* >>>>>>> >>>>>>> >>>>>>> *Software Engineer* >>>>>>> >>>>>>> *WSO2, Inc. *http://wso2.com >>>>>>> *lean . enterprise . middleware* >>>>>>> >>>>>>> Email *[email protected] <[email protected]>* >>>>>>> Mobile *+94719079739 <%2B94719079739>@* >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> *Jasintha Dasanayake* >>>>> >>>>> *Senior Software EngineerWSO2 Inc. | http://wso2.com >>>>> <http://wso2.com/>lean . enterprise . middleware* >>>>> >>>>> >>>>> *mobile :- 0711368118 <0711368118>* >>>>> >>>> >>>> >>> >> > -- *Susinda Perera* Software Engineer B.Sc.(Eng), M.Sc(Computer Science), AMIE(SL) Mobile:(+94)716049075 Blog: susinda.blogspot.com WSO2 Inc. http://wso2.com/ Tel : 94 11 214 5345 Fax :94 11 2145300
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
