in src/main/java/org/apache/commons/scxml2/io/SCXMLWriter.java [411:461]
private static void writeSCXML(final XMLStreamWriter writer, final SCXML scxml)
throws XMLStreamException {
// Start
writer.writeStartElement(SCXMLConstants.ELEM_SCXML);
// Namespaces
writer.writeNamespace(null, SCXMLConstants.XMLNS_SCXML);
// writer.writeNamespace("cs", XMLNS_COMMONS_SCXML);
if (scxml.getNamespaces() != null) {
for (final Map.Entry<String, String> entry : scxml.getNamespaces().entrySet()) {
final String key = entry.getKey();
if (key != null && !key.trim().isEmpty()) {
writer.writeNamespace(key, entry.getValue());
}
}
}
// Attributes
writeAV(writer, SCXMLConstants.ATTR_VERSION, scxml.getVersion());
writeAV(writer, SCXMLConstants.ATTR_INITIAL, scxml.getInitial());
writeAV(writer, SCXMLConstants.ATTR_DATAMODEL, scxml.getDatamodelName());
if (scxml.isLateBinding() != null) {
writeAV(writer, SCXMLConstants.ATTR_BINDING, scxml.isLateBinding() ? SCXMLConstants.ATTR_BINDING_LATE : SCXMLConstants.ATTR_BINDING_EARLY);
}
writeAV(writer, SCXMLConstants.ATTR_NAME, scxml.getName());
writeAV(writer, SCXMLConstants.ATTR_PROFILE, scxml.getProfile());
writeAV(writer, SCXMLConstants.ATTR_EXMODE, scxml.getExmode());
// Marker to indicate generated document
writer.writeComment(SCXMLConstants.XMLNS_COMMONS_SCXML);
// Write global script if defined
if (scxml.getGlobalScript() != null) {
final Script s = scxml.getGlobalScript();
writer.writeStartElement(SCXMLConstants.XMLNS_SCXML, SCXMLConstants.ELEM_SCRIPT);
if (s.getSrc() != null) {
writeAV(writer, SCXMLConstants.ATTR_SRC, s.getSrc());
} else {
writer.writeCData(s.getScript());
}
writer.writeEndElement();
}
// Children
writeDatamodel(writer, scxml.getDatamodel());
writeEnterableStates(writer, scxml.getChildren());
// End
writer.writeEndElement();
}