Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Not A Problem
-
Jena 3.6.0, Jena 3.7.0, Jena 3.8.0
-
None
-
None
Description
TriX output serialized by jena will produce xml that uses the default namespace.
<trix xmlns="http://www.w3.org/2004/03/trix/trix-1/">
<graph>
<triple>
<uri>urn:publicid:example.com:Device;67a2a324-cb08-30b2-b02d-096eceee933b;172.21.23.16</uri>
<uri>http://purl.org/dc/elements/1.1/title</uri>
<typedLiteral datatype="http://www.w3.org/2001/XMLSchema#string">172.21.23.16</typedLiteral>
</triple>
</graph>
</trix>
When the ReaderTrix class attempts to deserialize the xml the "datatype" attribute namespace is not properly detected.
This appears to be in the
private String attribute(XMLStreamReader parser, String nsURI, String localname)
The problem appears to be that parser.getAttributePrefix() returns an empty string and parser.getAttributeNamespace() returns an emptry string (Not NULL) so we don't call parser.getName().getNamespaceURI() to set the attrNS value so the equality check fails and we throw an exception.
I think that checking for "" should be added to the null check though " " should also probably call the parser.getName().getNamespaceURI() method.