Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Builder gem - xml attributes ordering

Reply
Thread Tools

Builder gem - xml attributes ordering

 
 
Arunprabu Durairaju
Guest
Posts: n/a
 
      06-07-2007
Hi,

I am currently developing a xml service using Ruby on rails with builder
gem. Builder is a great tool to create xml easily. But the only and
important issue I am facing is - unable to set the order inwhich the
attributes to be displayed in the xml. Whatever order I give the
attributes of an element, Builder creates the attributes in a totally
different order. Request someone's help to overcome this issue. Please
specify even if there is another method to create this service which
return xml instead of html using REST instead of Builder.

Thanks in advance
Arun

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Lyle Johnson
Guest
Posts: n/a
 
      06-07-2007
On 6/7/07, Arunprabu Durairaju <(E-Mail Removed)> wrote:

> I am ... unable to set the order in which the
> attributes to be displayed in the xml.


<snip>

Why do you think the attributes for an element *should* appear in any
particular order?

 
Reply With Quote
 
 
 
 
Arunprabu Durairaju
Guest
Posts: n/a
 
      06-07-2007
Lyle Johnson wrote:
> On 6/7/07, Arunprabu Durairaju <(E-Mail Removed)> wrote:
>
>> I am ... unable to set the order in which the
>> attributes to be displayed in the xml.

>
> <snip>
>
> Why do you think the attributes for an element *should* appear in any
> particular order?


Hi Johnson,

The service We are developing is going to be used by and application and
persons. That is the service will be called from another application for
getting the data. In this case, the ordering is not a necessary thing.
But in case of reading the xml manually in a browser, it is easy to read
the data if it comes in a specified order. Because, there are 5 to 10
attributes to each elements in our xml. And it is tough to locate the
attribute each time.

Thanks
Arun

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Keith Fahlgren
Guest
Posts: n/a
 
      06-07-2007
On 6/7/07, Lyle Johnson <(E-Mail Removed)> wrote:
> On 6/7/07, Arunprabu Durairaju <(E-Mail Removed)> wrote:
>
> > I am ... unable to set the order in which the
> > attributes to be displayed in the xml.

>
> <snip>
>
> Why do you think the attributes for an element *should* appear in any
> particular order?


To be explicit, Builder's behavior is acceptable because the order of
attributes in XML is not defined:

"""Note that the order of attribute specifications in a start-tag or
empty-element tag is not significant."""

http://www.w3.org/TR/REC-xml/



HTH,
Keith

 
Reply With Quote
 
Arunprabu Durairaju
Guest
Posts: n/a
 
      06-07-2007
Hi Johnson,

I understand that it is not specified in the XML specification and it is
not a requirement generally. But in languages like Java using Xerces,
the xml is generated with attributes in the sequence you have created
it. So just trying to find if there is any way to over come this issue.
I already have an alternative of constructing the xml as a string in the
sequence of attributes I need. But this is an ugly approach and trying
to find if there is any other alternative.

I also checked with REXML and it has the same behaviour as Builder.

Thanks
Arun

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Keith Fahlgren
Guest
Posts: n/a
 
      06-07-2007
On 6/7/07, Arunprabu Durairaju <(E-Mail Removed)> wrote:
> Hi Johnson,
>
> I understand that it is not specified in the XML specification and it is
> not a requirement generally.
>
> I also checked with REXML and it has the same behaviour as Builder.


Yeah, I'm sure they both use Hashes internally for attributes (and
Hashes are unordered in Ruby). However, it'd be easy to modify the
attribute insertion in Builder to take an Array instead. This is what
you'll have to change:

gems/builder-2.0.0/lib/builder/xmlmarkup.rb

# Insert the attributes (given in the hash).
def _insert_attributes(attrs, order=[])
return if attrs.nil?
order.each do |k|
v = attrs[k]
@target << %{ #{k}="#{_attr_value(v)}"} if v
end
attrs.each do |k, v|
@target << %{ #{k}="#{_attr_value(v)}"} unless order.member?(k)
end
end


Keith

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Where's a DOM builder that uses the Builder Pattern to ... buildDOMs? Phlip Python 5 01-13-2010 12:48 PM
Z-Ordering (Morton ordering) question nbigaouette C Programming 2 11-06-2009 05:26 AM
Ordering XML Attributes with Hpricot? Lance Pollard Ruby 7 09-25-2009 03:18 PM
RubyGems 0.9.1 calling a gem with gem '<gem>' Austin 7873 Ruby 5 01-27-2007 10:05 PM
xml builder not able to create namespaced elements w/attributes?? Stephen Bannasch Ruby 1 07-23-2006 02:36 PM



Advertisments