\r
public class XMLWriter {\r
\r
+ public static String XML_SCHEMA_URI = "http://www.w3.org/2001/XMLSchema";\r
+ public static String XML_SCHEMA_INSTANCE_URI = "http://www.w3.org/2001/XMLSchema-instance";\r
+ \r
private ReadGraph graph;\r
private Map<Resource, XMLWriter> subWriters = new HashMap<Resource, XMLWriter>();\r
private Map<Class<? extends XMLElementWriter>, XMLElementWriter> namedWriters = new HashMap<Class<? extends XMLElementWriter>, XMLElementWriter>();\r
if(getSchemaURI() != null) {\r
writer.writeDefaultNamespace(getSchemaURI());\r
}\r
+ writer.writeNamespace("xsd", XML_SCHEMA_URI);\r
+ writer.writeNamespace("xsi", XML_SCHEMA_INSTANCE_URI);\r
}\r
elementWriter.attributes(graph, instance, graph.getStatements(instance.instance, XML.hasAttribute), writer);\r
if (graph.hasValue(instance.instance))\r
c = childWriterClass.getConstructor();\r
childWriter = c.newInstance();\r
}\r
- //childWriter = childWriterClass.newInstance();\r
- \r
namedWriters.put(childWriterClass, childWriter);\r
} catch (IllegalAccessException|InstantiationException|NoSuchMethodException|SecurityException|InvocationTargetException e) {\r
String err = "Error processing " + childWriterClass.getName() + " : element writers must have accessible constructor with ReadGraph parameter";\r
childWriter = writers.get(type);\r
}\r
if (childWriter == null) {\r
+ // try child ontology/schema\r
Resource type = graph.getSingleType(child.instance);\r
Resource ontology = getOntology(type);\r
if (ontology != null) {\r
XMLWriter xmlWriter = subWriters.get(ontology);\r
if (xmlWriter != null) {\r
childWriter = xmlWriter.writers.get(type);\r
+ // wrap the child writer with namespace writer\r
+ if (childWriter != null) {\r
+ if (childWriter instanceof XMLElementNamedChildWriter) {\r
+ childWriter = new XMLNSNamedChildWriter((XMLElementNamedChildWriter)childWriter, xmlWriter.schemaURI);\r
+ } else {\r
+ childWriter = new XMLNSElementWriter(childWriter, xmlWriter.schemaURI);\r
+ }\r
+ }\r
}\r
}\r
if (childWriter == null)\r