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)* "'"
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:
In the meantime, if you really need this and are willing to hack the
sources, override REXML::Attribute::to_string(). Do something like
this in the application that generates the XML:REXML::Attribute.class_eval( %q^
def to_string
%Q[#@expanded_name="#{to_s().gsub(/"/, '"')}"]
end
^ )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