private static void writeSCXML()

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();
    }