Double Quotes in XML

I'm trying to do something similar to the following:

<?xml version="1.0" encoding="utf-8"?>
<Rules id="ruleset1">
  <Rule num="1">
    <Description>Foo must equal "bar".</Description>
    <Code>Foo = "bar"</Code>
  </Rule>
</Rules>

I'm reading the actual rules and descriptions in from a giant file and
when i spit it back out into an xml file i get errors involving the
quotes around bar. Looking at examples that should be working i notice
there's a difference between the quotes (if this will show up in groups
it's: " vs " ). I'm by no means an xml expert (or even novice) so i
may just be missing something here, but it seems like it's something to
do with the encodings maybe? Anyone have any suggestions?

- Geoff

You need to do one of the following.
     <Code Foo="bar"/>
     <Code><Foo>bar</Foo></Code>
     <Code>Foo=&quot;bar&quot;</Code>

I prefer the first option listed above.

On another note, I don't think it's typical to use uppercase the way you are.
I'd do it like this.
      <code foo="bar"/>

···

On 3/17/06, gparsons <geoffrey.parsons@gmail.com> wrote:

I'm trying to do something similar to the following:

<?xml version="1.0" encoding="utf-8"?>
<Rules id="ruleset1">
  <Rule num="1">
    <Description>Foo must equal "bar".</Description>
    <Code>Foo = "bar"</Code>
  </Rule>
</Rules>

I'm reading the actual rules and descriptions in from a giant file and
when i spit it back out into an xml file i get errors involving the
quotes around bar. Looking at examples that should be working i notice
there's a difference between the quotes (if this will show up in groups
it's: " vs " ). I'm by no means an xml expert (or even novice) so i
may just be missing something here, but it seems like it's something to
do with the encodings maybe? Anyone have any suggestions?

--
R. Mark Volkmann
Object Computing, Inc.

I'm trying to do something similar to the following:

<?xml version="1.0" encoding="utf-8"?>
<Rules id="ruleset1">
  <Rule num="1">
    <Description>Foo must equal "bar".</Description>
    <Code>Foo = "bar"</Code>
  </Rule>
</Rules>

This is well-formed XML.

(BTW, there is nothing wrong with the use of caps in the element names, maybe slightly unusual but that's all -- just don't forget that XML is case sensitive)

I'm reading the actual rules and descriptions in from a giant file and
when i spit it back out into an xml file i get errors involving the
quotes around bar. Looking at examples that should be working i notice
there's a difference between the quotes (if this will show up in groups
it's: " vs " ). I'm by no means an xml expert (or even novice) so i
may just be missing something here, but it seems like it's something to
do with the encodings maybe? Anyone have any suggestions?

What is giving you the errors? If I read you correctly, it is when you are writing the XML, so it isn't a parser giving you trouble.

Cheers,
Bob

···

On Mar 17, 2006, at 3:33 PM, gparsons wrote:

- Geoff

----
Bob Hutchison -- blogs at <http://www.recursive.ca/hutch/&gt;
Recursive Design Inc. -- <http://www.recursive.ca/&gt;
Raconteur -- <http://www.raconteur.info/&gt;
xampl for Ruby -- <http://rubyforge.org/projects/xampl/&gt;

Unfortunately i don't have much control over the markup (i'm not even
sure the program that is reading this in is expecting valid xml...
sigh). turns out it was a problem with what i was reading in having
some funky stuff going on.

I think it's not well-formed because the Code element contains text
with unescaped double-quotes. If you change them to &quot; then it's
well-formed.

···

On 3/17/06, Bob Hutchison <hutch@recursive.ca> wrote:

On Mar 17, 2006, at 3:33 PM, gparsons wrote:

> I'm trying to do something similar to the following:
>
> <?xml version="1.0" encoding="utf-8"?>
> <Rules id="ruleset1">
> <Rule num="1">
> <Description>Foo must equal "bar".</Description>
> <Code>Foo = "bar"</Code>
> </Rule>
> </Rules>

This is well-formed XML.

--
R. Mark Volkmann
Object Computing, Inc.

I'm trying to do something similar to the following:

<?xml version="1.0" encoding="utf-8"?>
<Rules id="ruleset1">
  <Rule num="1">
    <Description>Foo must equal "bar".</Description>
    <Code>Foo = "bar"</Code>
  </Rule>
</Rules>

This is well-formed XML.

I think it's not well-formed because the Code element contains text
with unescaped double-quotes. If you change them to &quot; then it's
well-formed.

It isn't really a matter of opinion, and you are nowhere near lazy enough :slight_smile: Run it through a validator. Both rxp and xmllint believe that it is OK. That is not to say that it wouldn't be better to escape those three characters ( quot, apos, and gt -- you *must* escape lt and amp) -- there's a lot of buggy software out there, and a little prevention can save you lots of trouble.
.

Cheers,
Bob

···

On Mar 17, 2006, at 7:22 PM, Mark Volkmann wrote:

On 3/17/06, Bob Hutchison <hutch@recursive.ca> wrote:

On Mar 17, 2006, at 3:33 PM, gparsons wrote:

--
R. Mark Volkmann
Object Computing, Inc.

----
Bob Hutchison -- blogs at <http://www.recursive.ca/hutch/&gt;
Recursive Design Inc. -- <http://www.recursive.ca/&gt;
Raconteur -- <http://www.raconteur.info/&gt;
xampl for Ruby -- <http://rubyforge.org/projects/xampl/&gt;