[relaxng-user] attribute value quoting bug in Trang?
James Miller
jamesmiller at isgenesis.com
Thu Jan 22 14:14:38 ICT 2004
Hi,
I typed in the example of annotations in the compact syntax on pages 218
and 219 of Eric van der Vlist's _RELAX NG_ book and ran trang-20030619
on it to see the XML syntax equivalent (which appears on page 218,
BTW). The .rng output was not well-formed XML because of a badly quoted
attribute value.
The relevant part of the .rnc input is right near its start:
namespace ann = "http://dyomedea.com/examples/ns/annotations"
[
ann:attribute = 'Annotation as foreign attribute for "grammar"'
ann:element [ 'Initial annotation as foreign element for "grammar"' ]
]
grammar {
# ...
Note that the ann:attribute attribute's value is delimited by single
quotes and contains double quotes.
Here's the beginning of the corresponding .rng output:
<?xml version="1.0" encoding="UTF-8"?>
<grammar ann:attribute="Annotation as foreign attribute for "grammar""
xmlns:ann="http://dyomedea.com/examples/ns/annotations"
xmlns="http://relaxng.org/ns/structure/1.0">
<ann:element>Initial annotation as foreign element for "grammar"</ann:element>
Whoops -- the value of the ann:attribute attribute is now delimited by
double quotes, but still also contains raw double quotes (as opposed to,
say, ``"'' character entity references).
This behavior might be a result of some code in
com/thaiopensource/relaxng/output/common/XmlWriter.java,
public void attribute(String name, String value) {
if (!inStartTag)
throw new IllegalStateException("attribute outside of start-tag");
write(' ');
write(name);
write('=');
write('"');
data(value);
write('"');
}
which isn't doing anything to ``escape double quotes'' in the value its
given.
-James Miller
More information about the relaxng-user
mailing list