Issue #9367 has been updated by duerst (Martin Dürst).


bearmini (Takashi Oguma) wrote:
> A direct reason is that my customer wants to have double quotes in the xml declaration because their handcrafted 'xml lint' tool complains the xml document produced by my ruby script contains single quotes. (Their convention requires all quoting characters should be double quotes.)

That's a very good reason, in particular for you.

> More generally, I think it is natural if we have control which quoting character will be used for the xml declaration too.

It probably won't hurt if this is controllable. But there might be some existing applications (and tests) that expect single-quoted pseudo-attributes in XML declarations, and they would get problems if
doc.context[:attribute_quote] = :quote
changes that. So I think it would be better if it's something like
doc.context[:xml_declaration_quote] = :quote

Anyway, I don't have the time to prepare a patch, sorry. But maybe you can create a patch?
----------------------------------------
Bug #9367: REXML::XmlDecl doesn't use user specified quotes
https://bugs.ruby-lang.org/issues/9367#change-44151

Author: bearmini (Takashi Oguma)
Status: Feedback
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN


=begin
REXML uses double quotes for quoting attributes if :attribute_quote is specified as document's context like below:

 doc = REXML::Document.new
 doc.context[:attribute_quote] = :quote

This looks working well on all elements but has no effect for xml declaration (i.e. <?xml version= ... ?>) if it exists.

Even if I specify (({doc.context[:attribute_quote] = :quote})), I will get this:

 <?xml version='1.0' encoding='UTF-8' standalone='true'?>
 <root attr1="value1">
   <child attr2="value2"/>
   <child attr3="value3"/>
 </root>

The expected result is:

 <?xml version="1.0" encoding="UTF-8" standalone="true"?>
 <root attr1="value1">
   <child attr2="value2"/>
   <child attr3="value3"/>
 </root>

=end


-- 
http://bugs.ruby-lang.org/