Bugs in xmerl_sax_parser?

Tony Garnock-Jones tonyg@REDACTED
Wed Sep 23 18:09:48 CEST 2009


Hi all,

I've just been playing with xmerl_sax_parser and I think I've found two
bugs:

 1. xmerl_sax_parser:file/2 and :stream/2 behave differently. Create a
    file, "t.xml", containing

<elem attr='123' x:attr='234' xmlns='http://lshift.net/d'
xmlns:x='http://lshift.net/x' />

    and then run the two expressions

    xmerl_sax_parser:file("t.xml", [{event_fun, fun (E,_,_) ->
io:format("~p~n", [E]), ok end}]).
    xmerl_sax_parser:stream("<elem attr='123' x:attr='234'
xmlns='http://lshift.net/d' xmlns:x='http://lshift.net/x' />",
[{event_fun, fun (E,_,_) -> io:format("~p~n", [E]), ok end}]).

    Note that they print the same event sequences, but the first results
    in {ok,ok,<<>>}, while the second results in {fatal_error,...}!

 2. The namespace URI supplied on unprefixed attributes in startElement
    tuples is the same as the URI for the default namespace. According
    to http://www.w3.org/TR/xml-names/#defaulting, "The namespace name
    for an unprefixed attribute name always has no value."

    For example, running one of the expressions above causes the
    following to be printed:

    {startElement,"http://lshift.net/d","elem",
                  {[],"elem"},
                  [{"http://lshift.net/d",[],"attr","123"},
                   {"http://lshift.net/x","x","attr","234"}]}

    While applications can work around this by ignoring the attribute's
    namespace name in cases where the prefix == "", I wonder if it
    wouldn't be better to supply "" for the namespace name for
    unprefixed attributes, like this:

    {startElement,"http://lshift.net/d","elem",
                  {[],"elem"},
                  [{[],[],"attr","123"},
                   {"http://lshift.net/x","x","attr","234"}]}

Regards,
  Tony
-- 
 [][][] Tony Garnock-Jones     | Mob: +44 (0)7905 974 211
   [][] LShift Ltd             | Tel: +44 (0)20 7729 7060
 []  [] http://www.lshift.net/ | Email: tonyg@REDACTED


More information about the erlang-questions mailing list