Forum: Ruby REXML -> attributes with single/double quotes

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
3d22e4544a908ea6169472e39161ae27?d=identicon&s=25 Stephan.Kaemper (Guest)
on 2005-11-14 20:53
(Received via mailing list)
Hi all,

when I write a previously read XML using REXML, all attribute values are
single quoted. Unfortunately the application I'm feeding that XML to
(currently) can't cope with that.

I tried to rad and understand the XML Standard, but couldn't find the
exact place where it says, that both single and double quoted strings
are allowed to delimit attribute values.
If this the right place?


[10]   	AttValue	   ::=   	'"' ([^<&"] | Reference)* '"'
			|  "'" ([^<&'] | Reference)* "'"


From: http://www.w3.org/TR/REC-xml/
       Section 2.3 "Common Syntactic Constructs"

That seems to say that attributes are either delimited by single quotes
or by double quotes.

The easy way, would be to follow the advice Sean Russel gave on Tue, 24
Jun 2003 10:02:02 +0900 in ruby-talk [74129], which was this:

> This will rewrite the method that is used to produce the XML fragment
> for an Attribute.
>

That does indeed help. Thanks for answering a question I didn't have at
that time (back in 2003). :-)

Is there a more elegant way to achieve this?


Happy rubying and you're a great community out there.

Stephan
Dce0999389d102f9a313af625375304c?d=identicon&s=25 dooby (Guest)
on 2005-11-14 21:14
(Received via mailing list)
Stephan Kämper wrote:
> Hi all,
>
> when I write a previously read XML using REXML, all attribute values are
> single quoted. Unfortunately the application I'm feeding that XML to
> (currently) can't cope with that.

Throw it away :-)

>
> From: http://www.w3.org/TR/REC-xml/
>        Section 2.3 "Common Syntactic Constructs"
>
> That seems to say that attributes are either delimited by single quotes
> or by double quotes.

http://www.w3.org/TR/REC-xml/#sec-notation

"string"

matches a literal string matching that given inside the double quotes.

'string'

matches a literal string matching that given inside the single quotes.



> >
> > REXML::Attribute.class_eval( %q^
> > def to_string
> > %Q[#@expanded_name="#{to_s().gsub(/"/, '&quot;')}"]
> > end
> > ^ )
> >
>
> Is there a more elegant way to achieve this?
>

I'd be disappointed if there wasn't -- sorry no help there, atm.


daz
This topic is locked and can not be replied to.