You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2022/07/27 19:50:25 UTC

[directory-ldap-api] branch master updated: o Don't convert to Base64 when not needed (See DIRAPI-369) o Now import commons-text o Externalized all the String constants used all over - fixing a few typoes not caught by tests)

This is an automated email from the ASF dual-hosted git repository.

elecharny pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/directory-ldap-api.git


The following commit(s) were added to refs/heads/master by this push:
     new 1dd1248d3 o Don't convert to Base64 when not needed (See DIRAPI-369) o Now import commons-text o Externalized all the String constants used all over - fixing a few typoes not caught by tests)
1dd1248d3 is described below

commit 1dd1248d33ffed80cc225e76b2769e4558bbc859
Author: emmanuel lecharny <el...@apache.org>
AuthorDate: Wed Jul 27 21:50:06 2022 +0200

    o Don't convert to Base64 when not needed (See DIRAPI-369)
    o Now import commons-text
    o Externalized all the String constants used all over - fixing a few
    typoes not caught by tests)
---
 dsml/parser/pom.xml                                |  12 +
 .../apache/directory/api/dsmlv2/DsmlLiterals.java  | 136 ++++++
 .../apache/directory/api/dsmlv2/ParserUtils.java   |  40 +-
 .../api/dsmlv2/request/AbandonRequestDsml.java     |   3 +-
 .../api/dsmlv2/request/AbstractRequestDsml.java    |  23 +-
 .../request/AbstractResultResponseRequestDsml.java |   3 +-
 .../api/dsmlv2/request/AddRequestDsml.java         |  27 +-
 .../dsmlv2/request/AttributeValueAssertion.java    |   4 +-
 .../request/AttributeValueAssertionFilter.java     |   3 +-
 .../api/dsmlv2/request/BatchRequestDsml.java       |  11 +-
 .../api/dsmlv2/request/BindRequestDsml.java        |   5 +-
 .../api/dsmlv2/request/CompareRequestDsml.java     |   9 +-
 .../api/dsmlv2/request/DelRequestDsml.java         |   3 +-
 .../api/dsmlv2/request/Dsmlv2Grammar.java          | 501 ++++++++++-----------
 .../api/dsmlv2/request/ExtendedRequestDsml.java    |  13 +-
 .../api/dsmlv2/request/ModifyDNRequestDsml.java    |   9 +-
 .../api/dsmlv2/request/ModifyRequestDsml.java      |  47 +-
 .../api/dsmlv2/request/SearchRequestDsml.java      | 107 +++--
 .../api/dsmlv2/response/AddResponseDsml.java       |   8 +-
 .../api/dsmlv2/response/BatchResponseDsml.java     |   5 +-
 .../api/dsmlv2/response/BindResponseDsml.java      |   7 +-
 .../api/dsmlv2/response/CompareResponseDsml.java   |   8 +-
 .../api/dsmlv2/response/DelResponseDsml.java       |   8 +-
 .../api/dsmlv2/response/Dsmlv2ResponseGrammar.java | 295 ++++++------
 .../api/dsmlv2/response/ErrorResponse.java         |  16 +-
 .../api/dsmlv2/response/ExtendedResponseDsml.java  |  17 +-
 .../api/dsmlv2/response/LdapResultDsml.java        |  15 +-
 .../api/dsmlv2/response/ModDNResponseDsml.java     |   8 +-
 .../api/dsmlv2/response/ModifyResponseDsml.java    |   8 +-
 .../api/dsmlv2/response/SearchResponseDsml.java    |   9 +-
 .../api/dsmlv2/response/SearchResultDoneDsml.java  |   8 +-
 .../api/dsmlv2/response/SearchResultEntryDsml.java |  28 +-
 .../dsmlv2/response/SearchResultReferenceDsml.java |  10 +-
 .../directory/api/dsmlv2/AbstractResponseTest.java |   1 +
 pom.xml                                            |   7 +
 35 files changed, 769 insertions(+), 645 deletions(-)

diff --git a/dsml/parser/pom.xml b/dsml/parser/pom.xml
index 3915149e8..a2b7db737 100644
--- a/dsml/parser/pom.xml
+++ b/dsml/parser/pom.xml
@@ -42,6 +42,11 @@
       <scope>test</scope>
     </dependency>
     
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>api-util</artifactId>
+    </dependency>
+    
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>api-ldap-codec-core</artifactId>
@@ -61,6 +66,12 @@
       <groupId>org.apache.servicemix.bundles</groupId>
       <artifactId>org.apache.servicemix.bundles.xpp3</artifactId>
     </dependency>
+    
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-text</artifactId>
+    </dependency>
+
   </dependencies>
 
   <build>
@@ -90,6 +101,7 @@
           </properties>
         </configuration>
       </plugin>
+      
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/DsmlLiterals.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/DsmlLiterals.java
new file mode 100644
index 000000000..c32c1ca14
--- /dev/null
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/DsmlLiterals.java
@@ -0,0 +1,136 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    https://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ *
+ */
+package org.apache.directory.api.dsmlv2;
+
+/**
+ * This Class contains DMSL literals
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public final class DsmlLiterals
+{
+    /** Some literal */
+    public static final String ABANDON_ID = "abandonID";
+    public static final String ABANDON_REQUEST = "abandonRequest";
+    public static final String ADD = "add";
+    public static final String ADD_REQUEST = "addRequest";
+    public static final String ADD_RESPONSE = "addResponse";
+    public static final String AND = "and";
+    public static final String ANY = "any";
+    public static final String APPROX_MATCH = "approxMatch";
+    public static final String ASSERTION = "assertion";
+    public static final String ATTR = "attr";
+    public static final String ATTRIBUTE = "attribute";
+    public static final String ATTRIBUTES = "attributes";
+    public static final String AUTH_REQUEST = "authRequest";
+    public static final String AUTH_RESPONSE = "authResponse";
+    public static final String BASE_OBJECT = "baseObject";
+    public static final String BATCH_REQUEST = "batchRequest";
+    public static final String BATCH_RESPONSE = "batchResponse";
+    public static final String BODY = "body";
+    public static final String CODE = "code";
+    public static final String COMPARE_REQUEST = "compareRequest";
+    public static final String COMPARE_RESPONSE = "compareResponse";
+    public static final String CONTROL = "control";
+    public static final String CONTROL_VALUE = "controlValue";
+    public static final String CRITICALITY = "criticality";
+    public static final String DEL_REQUEST = "delRequest";
+    public static final String DEL_RESPONSE = "delResponse";
+    public static final String DELETE = "delete";
+    public static final String DELETE_OLD_RDN = "deleteoldrdn";
+    public static final String DEREF_ALIASES = "derefAliases";
+    public static final String DEREF_ALWAYS = "derefAlways";
+    public static final String DEREF_FINDING_BASE_OBJ = "derefFindingBaseObj";
+    public static final String DEREF_IN_SEARCHING = "derefInSearching";
+    public static final String DESCR = "descr";
+    public static final String DETAIL = "detail";
+    public static final String DN = "dn";
+    public static final String DN_ATTRIBUTES = "dnAttributes";
+    public static final String ENVELOPE = "envelope";
+    public static final String EQUALITY_MATCH = "equalityMatch";
+    public static final String ERROR = "error";
+    public static final String ERROR_MESSAGE = "errorMessage";
+    public static final String ERROR_RESPONSE = "errorResponse";
+    public static final String EXIT = "exit";
+    public static final String EXTENDED_REQUEST = "extendedRequest";
+    public static final String EXTENDED_RESPONSE = "extendedResponse";
+    public static final String EXTENSIBLE_MATCH = "extensibleMatch";
+    public static final String FALSE = "false";
+    public static final String FILTER = "filter";
+    public static final String FINAL = "final";
+    public static final String GREATER_OR_EQUAL = "greaterOrEqual";
+    public static final String HEADER = "header";
+    public static final String INCREMENT = "increment";
+    public static final String INITIAL = "initial";
+    public static final String LESS_OR_EQUAL = "lessOrEqual";
+    public static final String MATCHED_DN = "matchedDN";
+    public static final String MATCHING_RULE = "matchingRule";
+    public static final String MESSAGE = "message";
+    public static final String MOD_DN_REQUEST = "modDNRequest";
+    public static final String MOD_DN_RESPONSE = "modDNResponse";
+    public static final String MODIFICATION = "modification";
+    public static final String MODIFY_REQUEST = "modifyRequest";
+    public static final String MODIFY_RESPONSE = "modifyResponse";
+    public static final String NAME = "name";
+    public static final String NEVER_DEREF_ALIASES = "neverDerefAliases";
+    public static final String NEW_RDN = "newrdn";
+    public static final String NEW_SUPERIOR = "newSuperior";
+    public static final String NOT = "not";
+    public static final String ON_ERROR = "onError";
+    public static final String OPERATION = "operation";
+    public static final String OR = "or";
+    public static final String PARALLEL = "parallel";
+    public static final String PRESENT = "present";
+    public static final String PRINCIPAL = "principal";
+    public static final String PROCESSING = "processing";
+    public static final String REF = "ref";
+    public static final String REFERRAL = "referral";
+    public static final String REPLACE = "replace";
+    public static final String REQUEST_ID = "requestID";
+    public static final String REQUEST_NAME = "requestName";
+    public static final String REQUEST_VALUE = "requestValue";
+    public static final String RESPONSE = "response";
+    public static final String RESPONSE_NAME = "responseName";
+    public static final String RESPONSE_ORDER = "responseOrder";
+    public static final String RESULT_CODE = "resultCode";
+    public static final String RESUME = "resume";
+    public static final String SCOPE = "scope";
+    public static final String SEARCH_REQUEST = "searchRequest";
+    public static final String SEARCH_RESPONSE = "searchResponse";
+    public static final String SEARCH_RESULT_DONE = "searchResultDone";
+    public static final String SEARCH_RESULT_ENTRY = "searchResultEntry";
+    public static final String SEARCH_RESULT_REFERENCE = "searchResultReference";
+    public static final String SEQUENTIAL = "sequential";
+    public static final String SINGLE_LEVEL = "singleLevel";
+    public static final String SIZE_LIMIT = "sizeLimit";
+    public static final String SUBSTRINGS = "substrings";
+    public static final String TIME_LIMIT = "timeLimit";
+    public static final String TRUE = "true";
+    public static final String TYPE = "type";
+    public static final String TYPES_ONLY = "typesOnly";
+    public static final String UNORDERED = "unordered";
+    public static final String VALUE = "value";
+    public static final String WHOLE_SUBTREE = "wholeSubtree";
+    
+    private DsmlLiterals()
+    {
+        // Nothing to do
+    }
+}
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/ParserUtils.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/ParserUtils.java
index 988d84324..9c7916ac3 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/ParserUtils.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/ParserUtils.java
@@ -38,8 +38,6 @@ import org.apache.directory.api.dsmlv2.request.BatchRequestDsml.Processing;
 import org.apache.directory.api.dsmlv2.request.BatchRequestDsml.ResponseOrder;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
-import org.apache.directory.api.ldap.model.entry.Value;
-import org.apache.directory.api.ldap.model.ldif.LdifUtils;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.util.Strings;
 import org.dom4j.Document;
@@ -76,6 +74,9 @@ public final class ParserUtils
     /** XSD namespace prefix. */
     public static final String XSD = "xsd";
 
+    /** XSD namespace prefix with ':'. */
+    public static final String XSD_COLON = "xsd:";
+
     /** The DSML namespace */
     public static final Namespace DSML_NAMESPACE = new Namespace( null, "urn:oasis:names:tc:DSML:2:0:core" );
 
@@ -112,7 +113,7 @@ public final class ParserUtils
         for ( int i = 0; i < nbAttributes; i++ )
         {
             // Checking if the attribute 'type' from XML Schema Instance namespace is used.
-            if ( "type".equals( xpp.getAttributeName( i ) )
+            if ( DsmlLiterals.TYPE.equals( xpp.getAttributeName( i ) )
                 && xpp.getNamespace( xpp.getAttributePrefix( i ) ).equals( XML_SCHEMA_INSTANCE_URI ) )
             {
                 type = xpp.getAttributeValue( i );
@@ -155,20 +156,7 @@ public final class ParserUtils
      */
     public static boolean needsBase64Encoding( Object value )
     {
-        if ( value instanceof Value )
-        {
-            return false;
-        }
-        else if ( value instanceof byte[] )
-        {
-            return true;
-        }
-        else if ( value instanceof String )
-        {
-            return !LdifUtils.isLDIFSafe( ( String ) value );
-        }
-
-        return true;
+        return ( value instanceof byte[] );
     }
 
 
@@ -189,7 +177,7 @@ public final class ParserUtils
             return new String( Base64.getEncoder().encode( Strings.getBytesUtf8( ( String ) value ) ), StandardCharsets.UTF_8 );
         }
 
-        return "";
+        return Strings.EMPTY_STRING;
     }
 
 
@@ -235,16 +223,16 @@ public final class ParserUtils
         {
             for ( Control control : controls )
             {
-                Element controlElement = element.addElement( "control" );
+                Element controlElement = element.addElement( DsmlLiterals.CONTROL );
 
                 if ( control.getOid() != null )
                 {
-                    controlElement.addAttribute( "type", control.getOid() );
+                    controlElement.addAttribute( DsmlLiterals.TYPE, control.getOid() );
                 }
 
                 if ( control.isCritical() )
                 {
-                    controlElement.addAttribute( "criticality", "true" );
+                    controlElement.addAttribute( DsmlLiterals.CRITICALITY, DsmlLiterals.TRUE );
                 }
 
                 Asn1Buffer asn1Buffer = new Asn1Buffer();
@@ -267,14 +255,14 @@ public final class ParserUtils
                         element.getDocument().getRootElement().add( XSD_NAMESPACE );
                         element.getDocument().getRootElement().add( XSI_NAMESPACE );
 
-                        Element valueElement = controlElement.addElement( "controlValue" ).addText(
+                        Element valueElement = controlElement.addElement( DsmlLiterals.CONTROL_VALUE ).addText(
                             ParserUtils.base64Encode( value ) );
-                        valueElement.addAttribute( new QName( "type", XSI_NAMESPACE ), ParserUtils.XSD + ":"
+                        valueElement.addAttribute( new QName( DsmlLiterals.TYPE, XSI_NAMESPACE ), ParserUtils.XSD_COLON
                             + ParserUtils.BASE64BINARY );
                     }
                     else
                     {
-                        controlElement.addElement( "controlValue" ).setText( Arrays.toString( value ) );
+                        controlElement.addElement( DsmlLiterals.CONTROL_VALUE ).setText( Arrays.toString( value ) );
                     }
                 }
             }
@@ -319,8 +307,8 @@ public final class ParserUtils
             factory.setFeature( javax.xml.XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE );
             try
             {
-                factory.setAttribute( javax.xml.XMLConstants.ACCESS_EXTERNAL_DTD, "" );
-                factory.setAttribute( javax.xml.XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "" );
+                factory.setAttribute( javax.xml.XMLConstants.ACCESS_EXTERNAL_DTD, Strings.EMPTY_STRING );
+                factory.setAttribute( javax.xml.XMLConstants.ACCESS_EXTERNAL_STYLESHEET, Strings.EMPTY_STRING );
             }
             catch ( IllegalArgumentException ex )
             {
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AbandonRequestDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AbandonRequestDsml.java
index 45f25c93e..a5bf26a23 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AbandonRequestDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AbandonRequestDsml.java
@@ -20,6 +20,7 @@
 package org.apache.directory.api.dsmlv2.request;
 
 
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.AbandonRequest;
 import org.apache.directory.api.ldap.model.message.AbandonRequestImpl;
@@ -80,7 +81,7 @@ public class AbandonRequestDsml extends AbstractRequestDsml<AbandonRequest>
         // AbandonID
         if ( getDecorated().getAbandoned() != 0 )
         {
-            element.addAttribute( "abandonID", Integer.toString( getDecorated().getAbandoned() ) );
+            element.addAttribute( DsmlLiterals.ABANDON_ID, Integer.toString( getDecorated().getAbandoned() ) );
         }
 
         return element;
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AbstractRequestDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AbstractRequestDsml.java
index 240e26c04..0a868e135 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AbstractRequestDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AbstractRequestDsml.java
@@ -24,6 +24,7 @@ import java.nio.ByteBuffer;
 
 import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.dsmlv2.AbstractDsmlMessageDecorator;
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.dsmlv2.ParserUtils;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.Request;
@@ -68,7 +69,7 @@ public abstract class AbstractRequestDsml<E extends Request>
         int requestID = getDecorated().getMessageId();
         if ( requestID > 0 )
         {
-            element.addAttribute( "requestID", Integer.toString( requestID ) );
+            element.addAttribute( DsmlLiterals.REQUEST_ID, Integer.toString( requestID ) );
         }
 
         // Controls
@@ -88,34 +89,34 @@ public abstract class AbstractRequestDsml<E extends Request>
         switch ( getDecorated().getType() )
         {
             case ABANDON_REQUEST:
-                return "abandonRequest";
+                return DsmlLiterals.ABANDON_REQUEST;
 
             case ADD_REQUEST:
-                return "addRequest";
+                return DsmlLiterals.ADD_REQUEST;
 
             case BIND_REQUEST:
-                return "authRequest";
+                return DsmlLiterals.AUTH_REQUEST;
 
             case COMPARE_REQUEST:
-                return "compareRequest";
+                return DsmlLiterals.COMPARE_REQUEST;
 
             case DEL_REQUEST:
-                return "delRequest";
+                return DsmlLiterals.DEL_REQUEST;
 
             case EXTENDED_REQUEST:
-                return "extendedRequest";
+                return DsmlLiterals.EXTENDED_REQUEST;
 
             case MODIFYDN_REQUEST:
-                return "modDNRequest";
+                return DsmlLiterals.MOD_DN_REQUEST;
 
             case MODIFY_REQUEST:
-                return "modifyRequest";
+                return DsmlLiterals.MODIFY_REQUEST;
 
             case SEARCH_REQUEST:
-                return "searchRequest";
+                return DsmlLiterals.SEARCH_REQUEST;
 
             default:
-                return "error";
+                return DsmlLiterals.ERROR;
         }
     }
 
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AbstractResultResponseRequestDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AbstractResultResponseRequestDsml.java
index 7146c2933..0a950a081 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AbstractResultResponseRequestDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AbstractResultResponseRequestDsml.java
@@ -23,6 +23,7 @@ package org.apache.directory.api.dsmlv2.request;
 import java.nio.ByteBuffer;
 
 import org.apache.directory.api.asn1.EncoderException;
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.dsmlv2.ParserUtils;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.AbandonListener;
@@ -71,7 +72,7 @@ public abstract class AbstractResultResponseRequestDsml<E extends ResultResponse
         int requestID = getDecorated().getMessageId();
         if ( requestID > 0 )
         {
-            element.addAttribute( "requestID", Integer.toString( requestID ) );
+            element.addAttribute( DsmlLiterals.REQUEST_ID, Integer.toString( requestID ) );
         }
 
         // Controls
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AddRequestDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AddRequestDsml.java
index 134c7f7c9..759508056 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AddRequestDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AddRequestDsml.java
@@ -20,6 +20,8 @@
 package org.apache.directory.api.dsmlv2.request;
 
 
+import org.apache.commons.text.StringEscapeUtils;
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.dsmlv2.ParserUtils;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.entry.Attribute;
@@ -162,7 +164,7 @@ public class AddRequestDsml
         // Dn
         if ( getDecorated().getEntry() != null )
         {
-            element.addAttribute( "dn", getDecorated().getEntry().getDn().getName() );
+            element.addAttribute( DsmlLiterals.DN, getDecorated().getEntry().getDn().getName() );
         }
 
         // Attributes
@@ -171,26 +173,27 @@ public class AddRequestDsml
         {
             for ( Attribute attribute : entry )
             {
-                Element attributeElement = element.addElement( "attr" );
-                attributeElement.addAttribute( "name", attribute.getId() );
+                Element attributeElement = element.addElement( DsmlLiterals.ATTR );
+                attributeElement.addAttribute( DsmlLiterals.NAME, attribute.getId() );
+                
                 // Looping on Values
                 for ( Value value : attribute )
                 {
-                    if ( ParserUtils.needsBase64Encoding( value.getString() ) )
+                    if ( value.isHumanReadable() )
                     {
-                        Namespace xsdNamespace = new Namespace( "xsd", ParserUtils.XML_SCHEMA_URI );
-                        Namespace xsiNamespace = new Namespace( "xsi", ParserUtils.XML_SCHEMA_INSTANCE_URI );
+                        attributeElement.addElement( DsmlLiterals.VALUE ).addText( StringEscapeUtils.escapeXml11( value.getString() ) );
+                    }
+                    else
+                    {
+                        Namespace xsdNamespace = new Namespace( ParserUtils.XSD, ParserUtils.XML_SCHEMA_URI );
+                        Namespace xsiNamespace = new Namespace( ParserUtils.XSI, ParserUtils.XML_SCHEMA_INSTANCE_URI );
                         attributeElement.getDocument().getRootElement().add( xsdNamespace );
                         attributeElement.getDocument().getRootElement().add( xsiNamespace );
 
-                        Element valueElement = attributeElement.addElement( "value" ).addText(
+                        Element valueElement = attributeElement.addElement( DsmlLiterals.VALUE ).addText(
                             ParserUtils.base64Encode( value.getString() ) );
                         valueElement
-                            .addAttribute( new QName( "type", xsiNamespace ), "xsd:" + ParserUtils.BASE64BINARY );
-                    }
-                    else
-                    {
-                        attributeElement.addElement( "value" ).addText( value.getString() );
+                            .addAttribute( new QName( DsmlLiterals.TYPE, xsiNamespace ), ParserUtils.XSD_COLON + ParserUtils.BASE64BINARY );
                     }
                 }
             }
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AttributeValueAssertion.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AttributeValueAssertion.java
index 52c7a78b5..d622781ce 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AttributeValueAssertion.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AttributeValueAssertion.java
@@ -82,7 +82,7 @@ public class AttributeValueAssertion
         }
         else
         {
-            return "";
+            return Strings.EMPTY_STRING;
         }
     }
 
@@ -203,6 +203,6 @@ public class AttributeValueAssertion
     @Override
     public String toString()
     {
-        return toString( "" );
+        return toString( Strings.EMPTY_STRING );
     }
 }
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AttributeValueAssertionFilter.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AttributeValueAssertionFilter.java
index daf1fd9ee..c086576a9 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AttributeValueAssertionFilter.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/AttributeValueAssertionFilter.java
@@ -19,6 +19,7 @@
  */
 package org.apache.directory.api.dsmlv2.request;
 
+import org.apache.directory.api.util.Strings;
 
 /**
  * Object to store the filter. A filter is seen as a tree with a root.
@@ -97,6 +98,6 @@ public class AttributeValueAssertionFilter extends Filter
     @Override
     public String toString()
     {
-        return assertion != null ? assertion.toStringRFC2254( filterType ) : "";
+        return assertion != null ? assertion.toStringRFC2254( filterType ) : Strings.EMPTY_STRING;
     }
 }
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/BatchRequestDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/BatchRequestDsml.java
index ca23baf4e..23ce4c518 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/BatchRequestDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/BatchRequestDsml.java
@@ -24,6 +24,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.directory.api.dsmlv2.DsmlDecorator;
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.dsmlv2.ParserUtils;
 import org.apache.directory.api.ldap.model.message.Request;
 import org.dom4j.Document;
@@ -277,30 +278,30 @@ public class BatchRequestDsml
     public String toDsml()
     {
         Document document = DocumentHelper.createDocument();
-        Element element = document.addElement( "batchRequest" );
+        Element element = document.addElement( DsmlLiterals.BATCH_REQUEST );
 
         // RequestID
         if ( requestID != 0 )
         {
-            element.addAttribute( "requestID", Integer.toString( requestID ) );
+            element.addAttribute( DsmlLiterals.REQUEST_ID, Integer.toString( requestID ) );
         }
 
         // ResponseOrder
         if ( responseOrder == ResponseOrder.UNORDERED )
         {
-            element.addAttribute( "responseOrder", "unordered" );
+            element.addAttribute( DsmlLiterals.RESPONSE_ORDER, DsmlLiterals.UNORDERED );
         }
 
         // Processing
         if ( processing == Processing.PARALLEL )
         {
-            element.addAttribute( "processing", "parallel" );
+            element.addAttribute( DsmlLiterals.PROCESSING, DsmlLiterals.PARALLEL );
         }
 
         // On Error
         if ( onError == OnError.RESUME )
         {
-            element.addAttribute( "onError", "resume" );
+            element.addAttribute( DsmlLiterals.ON_ERROR, DsmlLiterals.RESUME );
         }
 
         // Requests
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/BindRequestDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/BindRequestDsml.java
index 4897cf265..a77935ded 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/BindRequestDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/BindRequestDsml.java
@@ -20,6 +20,7 @@
 package org.apache.directory.api.dsmlv2.request;
 
 
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.BindRequest;
 import org.apache.directory.api.ldap.model.message.BindRequestImpl;
@@ -89,7 +90,7 @@ public class BindRequestDsml
         {
             // A DN has been provided
 
-            element.addAttribute( "principal", dn.getName() );
+            element.addAttribute( DsmlLiterals.PRINCIPAL, dn.getName() );
         }
         else
         {
@@ -97,7 +98,7 @@ public class BindRequestDsml
 
             String name = request.getName();
 
-            element.addAttribute( "principal", name );
+            element.addAttribute( DsmlLiterals.PRINCIPAL, name );
         }
 
         return element;
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/CompareRequestDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/CompareRequestDsml.java
index b887f9083..1ecbfc101 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/CompareRequestDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/CompareRequestDsml.java
@@ -20,6 +20,7 @@
 package org.apache.directory.api.dsmlv2.request;
 
 
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.entry.Value;
 import org.apache.directory.api.ldap.model.message.CompareRequest;
@@ -86,18 +87,18 @@ public class CompareRequestDsml
         // Dn
         if ( request.getName() != null )
         {
-            element.addAttribute( "dn", request.getName().getName() );
+            element.addAttribute( DsmlLiterals.DN, request.getName().getName() );
         }
 
         // Assertion
-        Element assertionElement = element.addElement( "assertion" );
+        Element assertionElement = element.addElement( DsmlLiterals.ASSERTION );
         if ( request.getAttributeId() != null )
         {
-            assertionElement.addAttribute( "name", request.getAttributeId() );
+            assertionElement.addAttribute( DsmlLiterals.NAME, request.getAttributeId() );
         }
         if ( request.getAssertionValue() != null )
         {
-            assertionElement.addElement( "value" ).setText( request.getAssertionValue().getString() );
+            assertionElement.addElement( DsmlLiterals.VALUE ).setText( request.getAssertionValue().getString() );
         }
 
         return element;
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/DelRequestDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/DelRequestDsml.java
index 4854b46fb..1bd8feb31 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/DelRequestDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/DelRequestDsml.java
@@ -20,6 +20,7 @@
 package org.apache.directory.api.dsmlv2.request;
 
 
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.DeleteRequest;
@@ -83,7 +84,7 @@ public class DelRequestDsml
         // Dn
         if ( getDecorated().getName() != null )
         {
-            element.addAttribute( "dn", getDecorated().getName().getName() );
+            element.addAttribute( DsmlLiterals.DN, getDecorated().getName().getName() );
         }
 
         return element;
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/Dsmlv2Grammar.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/Dsmlv2Grammar.java
index 7bba085b4..590b8320a 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/Dsmlv2Grammar.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/Dsmlv2Grammar.java
@@ -30,6 +30,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.util.Oid;
 import org.apache.directory.api.dsmlv2.AbstractGrammar;
 import org.apache.directory.api.dsmlv2.DsmlControl;
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.dsmlv2.Dsmlv2Container;
 import org.apache.directory.api.dsmlv2.Dsmlv2StatesEnum;
 import org.apache.directory.api.dsmlv2.Grammar;
@@ -58,9 +59,9 @@ import org.apache.directory.api.ldap.model.message.CompareRequest;
 import org.apache.directory.api.ldap.model.message.CompareRequestImpl;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.DeleteRequestImpl;
-import org.apache.directory.api.ldap.model.message.OpaqueExtendedRequest;
 import org.apache.directory.api.ldap.model.message.ModifyDnRequestImpl;
 import org.apache.directory.api.ldap.model.message.ModifyRequestImpl;
+import org.apache.directory.api.ldap.model.message.OpaqueExtendedRequest;
 import org.apache.directory.api.ldap.model.message.Request;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.apache.directory.api.ldap.model.message.SearchRequestImpl;
@@ -82,26 +83,6 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
 {
     private LdapApiService codec = LdapApiServiceFactory.getSingleton();
 
-    /** Some literal */
-    private static final String BATCH_REQUEST = "batchRequest";
-    private static final String ABANDON_REQUEST = "abandonRequest";
-    private static final String ADD_REQUEST = "addRequest";
-    private static final String COMPARE_REQUEST = "compareRequest";
-    private static final String DEL_REQUEST = "delRequest";
-    private static final String EXTENDED_REQUEST = "extendedRequest";
-    private static final String MOD_DN_REQUEST = "modDNRequest";
-    private static final String MODIFY_REQUEST = "modifyRequest";
-    private static final String SEARCH_REQUEST = "searchRequest";
-    private static final String CONTROL = "control";
-    private static final String CONTROL_VALUE = "controlValue";
-    private static final String ATTR = "attr";
-    private static final String VALUE = "value";
-    private static final String MODIFICATION = "modification";
-    private static final String SUBSTRINGS = "substrings";
-    private static final String REQUEST_ID = "requestID";
-    private static final String NAME = "name";
-    private static final String TRUE = "true";
-    private static final String FALSE = "false";
     //*************************
     //*    GRAMMAR ACTIONS    *
     //*************************
@@ -126,22 +107,22 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             // Checking and adding the batchRequest's attributes
             String attributeValue;
             // requestID
-            attributeValue = xpp.getAttributeValue( "", REQUEST_ID );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
                 batchRequest.setRequestID( ParserUtils.parseAndVerifyRequestID( attributeValue, xpp ) );
             }
             // processing
-            attributeValue = xpp.getAttributeValue( "", "processing" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.PROCESSING );
 
             if ( attributeValue != null )
             {
-                if ( "sequential".equals( attributeValue ) )
+                if ( DsmlLiterals.SEQUENTIAL.equals( attributeValue ) )
                 {
                     batchRequest.setProcessing( Processing.SEQUENTIAL );
                 }
-                else if ( "parallel".equals( attributeValue ) )
+                else if ( DsmlLiterals.PARALLEL.equals( attributeValue ) )
                 {
                     batchRequest.setProcessing( Processing.PARALLEL );
                 }
@@ -156,15 +137,15 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // onError
-            attributeValue = xpp.getAttributeValue( "", "onError" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.ON_ERROR );
 
             if ( attributeValue != null )
             {
-                if ( "resume".equals( attributeValue ) )
+                if ( DsmlLiterals.RESUME.equals( attributeValue ) )
                 {
                     batchRequest.setOnError( OnError.RESUME );
                 }
-                else if ( "exit".equals( attributeValue ) )
+                else if ( DsmlLiterals.EXIT.equals( attributeValue ) )
                 {
                     batchRequest.setOnError( OnError.EXIT );
                 }
@@ -179,15 +160,15 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // responseOrder
-            attributeValue = xpp.getAttributeValue( "", "responseOrder" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.RESPONSE_ORDER );
 
             if ( attributeValue != null )
             {
-                if ( "sequential".equals( attributeValue ) )
+                if ( DsmlLiterals.SEQUENTIAL.equals( attributeValue ) )
                 {
                     batchRequest.setResponseOrder( ResponseOrder.SEQUENTIAL );
                 }
-                else if ( "unordered".equals( attributeValue ) )
+                else if ( DsmlLiterals.UNORDERED.equals( attributeValue ) )
                 {
                     batchRequest.setResponseOrder( ResponseOrder.UNORDERED );
                 }
@@ -222,7 +203,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             // Checking and adding the request's attributes
             String attributeValue;
             // requestID
-            attributeValue = xpp.getAttributeValue( "", REQUEST_ID );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -237,7 +218,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // abandonID
-            attributeValue = xpp.getAttributeValue( "", "abandonID" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.ABANDON_ID );
 
             if ( attributeValue != null )
             {
@@ -276,7 +257,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             // Checking and adding the request's attributes
             String attributeValue;
             // requestID
-            attributeValue = xpp.getAttributeValue( "", REQUEST_ID );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -291,7 +272,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // dn
-            attributeValue = xpp.getAttributeValue( "", "dn" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DN );
 
             if ( attributeValue != null )
             {
@@ -330,7 +311,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             // Checking and adding the request's attributes
             String attributeValue;
             // name
-            attributeValue = xpp.getAttributeValue( "", NAME );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME );
 
             if ( attributeValue != null )
             {
@@ -422,7 +403,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             // Checking and adding the request's attributes
             String attributeValue;
             // requestID
-            attributeValue = xpp.getAttributeValue( "", REQUEST_ID );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -436,7 +417,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
                 }
             }
             // principal
-            attributeValue = xpp.getAttributeValue( "", "principal" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.PRINCIPAL );
 
             if ( attributeValue != null )
             {
@@ -468,7 +449,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             // Checking and adding the request's attributes
             String attributeValue;
             // requestID
-            attributeValue = xpp.getAttributeValue( "", REQUEST_ID );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -483,7 +464,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // dn
-            attributeValue = xpp.getAttributeValue( "", "dn" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DN );
 
             if ( attributeValue != null )
             {
@@ -522,7 +503,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             String attributeId;
 
             // name
-            attributeId = xpp.getAttributeValue( "", NAME );
+            attributeId = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME );
 
             if ( attributeId != null )
             {
@@ -596,7 +577,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             // Checking and adding the request's attributes
             String attributeValue;
             // requestID
-            attributeValue = xpp.getAttributeValue( "", REQUEST_ID );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -611,7 +592,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // dn
-            attributeValue = xpp.getAttributeValue( "", "dn" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DN );
 
             if ( attributeValue != null )
             {
@@ -652,7 +633,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             // Checking and adding the request's attributes
             String attributeValue;
             // requestID
-            attributeValue = xpp.getAttributeValue( "", REQUEST_ID );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -775,7 +756,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             // Checking and adding the request's attributes
             String attributeValue;
             // requestID
-            attributeValue = xpp.getAttributeValue( "", REQUEST_ID );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -790,7 +771,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // dn
-            attributeValue = xpp.getAttributeValue( "", "dn" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DN );
 
             if ( attributeValue != null )
             {
@@ -809,7 +790,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // newrdn
-            attributeValue = xpp.getAttributeValue( "", "newrdn" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NEW_RDN );
 
             if ( attributeValue != null )
             {
@@ -828,15 +809,15 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // deleteoldrdn
-            attributeValue = xpp.getAttributeValue( "", "deleteoldrdn" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DELETE_OLD_RDN );
 
             if ( attributeValue != null )
             {
-                if ( ( attributeValue.equalsIgnoreCase( TRUE ) ) || ( "1".equals( attributeValue ) ) )
+                if ( ( attributeValue.equalsIgnoreCase( DsmlLiterals.TRUE ) ) || ( "1".equals( attributeValue ) ) )
                 {
                     modifyDNRequest.setDeleteOldRdn( true );
                 }
-                else if ( ( attributeValue.equalsIgnoreCase( FALSE ) ) || ( "0".equals( attributeValue ) ) )
+                else if ( ( attributeValue.equalsIgnoreCase( DsmlLiterals.FALSE ) ) || ( "0".equals( attributeValue ) ) )
                 {
                     modifyDNRequest.setDeleteOldRdn( false );
                 }
@@ -851,7 +832,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // newsuperior
-            attributeValue = xpp.getAttributeValue( "", "newSuperior" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NEW_SUPERIOR );
 
             if ( attributeValue != null )
             {
@@ -886,7 +867,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             // Checking and adding the request's attributes
             String attributeValue;
             // requestID
-            attributeValue = xpp.getAttributeValue( "", REQUEST_ID );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -901,7 +882,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // dn
-            attributeValue = xpp.getAttributeValue( "", "dn" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DN );
 
             if ( attributeValue != null )
             {
@@ -940,23 +921,23 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             // Checking and adding the request's attributes
             String attributeValue;
             // operation
-            attributeValue = xpp.getAttributeValue( "", "operation" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.OPERATION );
 
             if ( attributeValue != null )
             {
-                if ( "add".equals( attributeValue ) )
+                if ( DsmlLiterals.ADD.equals( attributeValue ) )
                 {
                     modifyRequest.setCurrentOperation( LdapCodecConstants.OPERATION_ADD );
                 }
-                else if ( "delete".equals( attributeValue ) )
+                else if ( DsmlLiterals.DELETE.equals( attributeValue ) )
                 {
                     modifyRequest.setCurrentOperation( LdapCodecConstants.OPERATION_DELETE );
                 }
-                else if ( "replace".equals( attributeValue ) )
+                else if ( DsmlLiterals.REPLACE.equals( attributeValue ) )
                 {
                     modifyRequest.setCurrentOperation( LdapCodecConstants.OPERATION_REPLACE );
                 }
-                else if ( "increment".equals( attributeValue ) )
+                else if ( DsmlLiterals.INCREMENT.equals( attributeValue ) )
                 {
                     modifyRequest.setCurrentOperation( LdapCodecConstants.OPERATION_INCREMENT );
                 }
@@ -971,7 +952,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // name
-            attributeValue = xpp.getAttributeValue( "", NAME );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME );
 
             if ( attributeValue != null )
             {
@@ -1052,7 +1033,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             // Checking and adding the request's attributes
             String attributeValue;
             // requestID
-            attributeValue = xpp.getAttributeValue( "", REQUEST_ID );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -1067,7 +1048,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // dn
-            attributeValue = xpp.getAttributeValue( "", "dn" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DN );
 
             if ( attributeValue != null )
             {
@@ -1086,19 +1067,19 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // scope
-            attributeValue = xpp.getAttributeValue( "", "scope" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.SCOPE );
 
             if ( attributeValue != null )
             {
-                if ( "baseObject".equals( attributeValue ) )
+                if ( DsmlLiterals.BASE_OBJECT.equals( attributeValue ) )
                 {
                     searchRequest.setScope( SearchScope.OBJECT );
                 }
-                else if ( "singleLevel".equals( attributeValue ) )
+                else if ( DsmlLiterals.SINGLE_LEVEL.equals( attributeValue ) )
                 {
                     searchRequest.setScope( SearchScope.ONELEVEL );
                 }
-                else if ( "wholeSubtree".equals( attributeValue ) )
+                else if ( DsmlLiterals.WHOLE_SUBTREE.equals( attributeValue ) )
                 {
                     searchRequest.setScope( SearchScope.SUBTREE );
                 }
@@ -1113,23 +1094,23 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // derefAliases
-            attributeValue = xpp.getAttributeValue( "", "derefAliases" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DEREF_ALIASES );
 
             if ( attributeValue != null )
             {
-                if ( "neverDerefAliases".equals( attributeValue ) )
+                if ( DsmlLiterals.NEVER_DEREF_ALIASES.equals( attributeValue ) )
                 {
                     searchRequest.setDerefAliases( AliasDerefMode.NEVER_DEREF_ALIASES );
                 }
-                else if ( "derefInSearching".equals( attributeValue ) )
+                else if ( DsmlLiterals.DEREF_IN_SEARCHING.equals( attributeValue ) )
                 {
                     searchRequest.setDerefAliases( AliasDerefMode.DEREF_IN_SEARCHING );
                 }
-                else if ( "derefFindingBaseObj".equals( attributeValue ) )
+                else if ( DsmlLiterals.DEREF_FINDING_BASE_OBJ.equals( attributeValue ) )
                 {
                     searchRequest.setDerefAliases( AliasDerefMode.DEREF_FINDING_BASE_OBJ );
                 }
-                else if ( "derefAlways".equals( attributeValue ) )
+                else if ( DsmlLiterals.DEREF_ALWAYS.equals( attributeValue ) )
                 {
                     searchRequest.setDerefAliases( AliasDerefMode.DEREF_ALWAYS );
                 }
@@ -1144,7 +1125,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // sizeLimit
-            attributeValue = xpp.getAttributeValue( "", "sizeLimit" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.SIZE_LIMIT );
 
             if ( attributeValue != null )
             {
@@ -1163,7 +1144,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // timeLimit
-            attributeValue = xpp.getAttributeValue( "", "timeLimit" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.TIME_LIMIT );
 
             if ( attributeValue != null )
             {
@@ -1182,15 +1163,15 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // typesOnly
-            attributeValue = xpp.getAttributeValue( "", "typesOnly" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.TYPES_ONLY );
 
             if ( attributeValue != null )
             {
-                if ( ( attributeValue.equals( TRUE ) ) || ( "1".equals( attributeValue ) ) )
+                if ( ( attributeValue.equals( DsmlLiterals.TRUE ) ) || ( "1".equals( attributeValue ) ) )
                 {
                     searchRequest.setTypesOnly( true );
                 }
-                else if ( ( attributeValue.equals( FALSE ) ) || ( "0".equals( attributeValue ) ) )
+                else if ( ( attributeValue.equals( DsmlLiterals.FALSE ) ) || ( "0".equals( attributeValue ) ) )
                 {
                     searchRequest.setTypesOnly( false );
                 }
@@ -1223,7 +1204,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             XmlPullParser xpp = container.getParser();
 
             // Checking and adding the request's attribute name
-            String attributeName = xpp.getAttributeValue( "", NAME );
+            String attributeName = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME );
 
             if ( attributeName != null )
             {
@@ -1269,7 +1250,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             // Checking and adding the filter's attributes
             String attributeValue;
             // name
-            attributeValue = xpp.getAttributeValue( "", NAME );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME );
 
             if ( attributeValue != null )
             {
@@ -1567,7 +1548,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             AttributeValueAssertion assertion = new AttributeValueAssertion();
 
             // Checking and adding the filter's attributes
-            String attributeName = xpp.getAttributeValue( "", NAME );
+            String attributeName = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME );
 
             if ( attributeName != null )
             {
@@ -1616,7 +1597,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             AttributeValueAssertion assertion = new AttributeValueAssertion();
 
             // Checking and adding the filter's attributes
-            String attributeName = xpp.getAttributeValue( "", NAME );
+            String attributeName = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME );
 
             if ( attributeName != null )
             {
@@ -1667,7 +1648,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             // Checking and adding the filter's attributes
             String attributeValue;
             // name
-            attributeValue = xpp.getAttributeValue( "", NAME );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME );
 
             if ( attributeValue != null )
             {
@@ -1716,7 +1697,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             AttributeValueAssertion assertion = new AttributeValueAssertion();
 
             // Checking and adding the filter's attributes
-            String attributeName = xpp.getAttributeValue( "", NAME );
+            String attributeName = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME );
 
             if ( attributeName != null )
             {
@@ -1825,7 +1806,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             // Checking and adding the filter's attributes
             String attributeValue;
             // name
-            attributeValue = xpp.getAttributeValue( "", NAME );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME );
 
             if ( attributeValue != null )
             {
@@ -1905,15 +1886,15 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             // Checking and adding the filter's attributes
             String attributeValue;
             // dnAttributes
-            attributeValue = xpp.getAttributeValue( "", "dnAttributes" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DN_ATTRIBUTES );
 
             if ( attributeValue != null )
             {
-                if ( ( attributeValue.equals( TRUE ) ) || ( "1".equals( attributeValue ) ) )
+                if ( ( attributeValue.equals( DsmlLiterals.TRUE ) ) || ( "1".equals( attributeValue ) ) )
                 {
                     extensibleMatchFilter.setDnAttributes( true );
                 }
-                else if ( ( attributeValue.equals( FALSE ) ) || ( "0".equals( attributeValue ) ) )
+                else if ( ( attributeValue.equals( DsmlLiterals.FALSE ) ) || ( "0".equals( attributeValue ) ) )
                 {
                     extensibleMatchFilter.setDnAttributes( false );
                 }
@@ -1928,7 +1909,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // matchingRule
-            attributeValue = xpp.getAttributeValue( "", "matchingRule" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING,  DsmlLiterals.MATCHING_RULE );
 
             if ( attributeValue != null )
             {
@@ -1936,7 +1917,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // name
-            attributeValue = xpp.getAttributeValue( "", NAME );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME );
 
             if ( attributeValue != null )
             {
@@ -2007,7 +1988,7 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             String attributeValue;
             
             // TYPE
-            attributeValue = xpp.getAttributeValue( "", "type" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.TYPE );
 
             if ( attributeValue != null )
             {
@@ -2035,15 +2016,15 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
             }
 
             // CRITICALITY
-            attributeValue = xpp.getAttributeValue( "", "criticality" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.CRITICALITY );
 
             if ( attributeValue != null )
             {
-                if ( attributeValue.equals( TRUE ) )
+                if ( attributeValue.equals( DsmlLiterals.TRUE ) )
                 {
                     control.setCritical( true );
                 }
-                else if ( attributeValue.equals( FALSE ) )
+                else if ( attributeValue.equals( DsmlLiterals.FALSE ) )
                 {
                     control.setCritical( false );
                 }
@@ -2121,107 +2102,107 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
 
         // ** OPEN BATCH REQUEST **
         // State: [INIT_GRAMMAR_STATE] - Tag: <batchRequest>
-        super.transitions[Dsmlv2StatesEnum.INIT_GRAMMAR_STATE.ordinal()].put( new Tag( BATCH_REQUEST, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.INIT_GRAMMAR_STATE.ordinal()].put( new Tag( DsmlLiterals.BATCH_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.INIT_GRAMMAR_STATE, Dsmlv2StatesEnum.BATCHREQUEST_START_TAG,
                 batchRequestCreation ) );
 
         // ** CLOSE BATCH REQUEST **
         // state: [BATCHREQUEST_START_TAG] - Tag: </batchRequest>
         super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()]
-            .put( new Tag( BATCH_REQUEST, Tag.END ), new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG,
+            .put( new Tag( DsmlLiterals.BATCH_REQUEST, Tag.END ), new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG,
                 Dsmlv2StatesEnum.BATCHREQUEST_END_TAG, null ) );
         //state: [BATCHREQUEST_LOOP] - Tag: </batchRequest>
-        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( BATCH_REQUEST, Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DsmlLiterals.BATCH_REQUEST, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_LOOP, Dsmlv2StatesEnum.GRAMMAR_END, null ) );
 
         // ** ABANDON REQUEST **
         // State: [BATCHREQUEST_START_TAG] - Tag: <abandonRequest>
         super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put(
-            new Tag( ABANDON_REQUEST, Tag.START ),
+            new Tag( DsmlLiterals.ABANDON_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, Dsmlv2StatesEnum.ABANDON_REQUEST_START_TAG,
                 abandonRequestCreation ) );
         // state: [BATCHREQUEST_LOOP] - Tag: <abandonRequest>
-        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( ABANDON_REQUEST, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DsmlLiterals.ABANDON_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_LOOP, Dsmlv2StatesEnum.ABANDON_REQUEST_START_TAG,
                 abandonRequestCreation ) );
 
         // ** ADD REQUEST **
         // state: [BATCHREQUEST_START_TAG] - Tag: <addRequest>
-        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put( new Tag( ADD_REQUEST, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.ADD_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, Dsmlv2StatesEnum.ADD_REQUEST_START_TAG,
                 addRequestCreation ) );
         // state: [BATCHREQUEST_LOOP] - Tag: <addRequest>
-        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( ADD_REQUEST, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DsmlLiterals.ADD_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_LOOP, Dsmlv2StatesEnum.ADD_REQUEST_START_TAG,
                 addRequestCreation ) );
 
         // ** AUTH REQUEST **
         // state: [BATCHREQUEST_START_TAG] - Tag: <authRequest>
-        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put( new Tag( "authRequest", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.AUTH_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, Dsmlv2StatesEnum.AUTH_REQUEST_START_TAG,
                 authRequestCreation ) );
 
         // ** COMPARE REQUEST **
         // state: [BATCHREQUEST_START_TAG] - Tag: <compareRequest>
         super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put(
-            new Tag( COMPARE_REQUEST, Tag.START ),
+            new Tag( DsmlLiterals.COMPARE_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, Dsmlv2StatesEnum.COMPARE_REQUEST_START_TAG,
                 compareRequestCreation ) );
         // state: [BATCHREQUEST_LOOP] - Tag: <compareRequest>
-        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( COMPARE_REQUEST, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DsmlLiterals.COMPARE_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_LOOP, Dsmlv2StatesEnum.COMPARE_REQUEST_START_TAG,
                 compareRequestCreation ) );
 
         // ** DEL REQUEST **
         // state: [BATCHREQUEST_START_TAG] - Tag: <delRequest>
-        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put( new Tag( DEL_REQUEST, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.DEL_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, Dsmlv2StatesEnum.DEL_REQUEST_START_TAG,
                 delRequestCreation ) );
         // state: [BATCHREQUEST_LOOP] - Tag: <delRequest>
-        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DEL_REQUEST, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DsmlLiterals.DEL_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_LOOP, Dsmlv2StatesEnum.DEL_REQUEST_START_TAG,
                 delRequestCreation ) );
 
         // ** EXTENDED REQUEST **
         // state: [BATCHREQUEST_START_TAG] - Tag: <extendedRequest>
         super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put(
-            new Tag( EXTENDED_REQUEST, Tag.START ),
+            new Tag( DsmlLiterals.EXTENDED_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG,
                 Dsmlv2StatesEnum.EXTENDED_REQUEST_START_TAG, extendedRequestCreation ) );
         // state: [BATCHREQUEST_LOOP] - Tag: <extendedRequest>
-        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( EXTENDED_REQUEST, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DsmlLiterals.EXTENDED_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_LOOP, Dsmlv2StatesEnum.EXTENDED_REQUEST_START_TAG,
                 extendedRequestCreation ) );
 
         // ** MOD Dn REQUEST **
         // state: [BATCHREQUEST_START_TAG] - Tag: <modDNRequest>
-        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put( new Tag( MOD_DN_REQUEST, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.MOD_DN_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG,
                 Dsmlv2StatesEnum.MODIFY_DN_REQUEST_START_TAG, modDNRequestCreation ) );
         // state: [BATCHREQUEST_LOOP] - Tag: <modDNRequest>
-        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( MOD_DN_REQUEST, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DsmlLiterals.MOD_DN_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_LOOP, Dsmlv2StatesEnum.MODIFY_DN_REQUEST_START_TAG,
                 modDNRequestCreation ) );
 
         // ** MODIFY REQUEST **
         // state: [BATCHREQUEST_START_TAG] - Tag: <modifyRequest>
         super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put(
-            new Tag( MODIFY_REQUEST, Tag.START ),
+            new Tag( DsmlLiterals.MODIFY_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, Dsmlv2StatesEnum.MODIFY_REQUEST_START_TAG,
                 modifyRequestCreation ) );
         // state: [BATCHREQUEST_LOOP] - Tag: <modifyRequest>
-        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( MODIFY_REQUEST, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DsmlLiterals.MODIFY_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_LOOP, Dsmlv2StatesEnum.MODIFY_REQUEST_START_TAG,
                 modifyRequestCreation ) );
 
         // ** SEARCH REQUEST **
         // state: [BATCHREQUEST_START_TAG] - Tag: <searchRequest>
         super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put(
-            new Tag( SEARCH_REQUEST, Tag.START ),
+            new Tag( DsmlLiterals.SEARCH_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, Dsmlv2StatesEnum.SEARCH_REQUEST_START_TAG,
                 searchRequestCreation ) );
         // state: [BATCHREQUEST_LOOP] - Tag: <searchRequest>
-        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( SEARCH_REQUEST, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DsmlLiterals.SEARCH_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_LOOP, Dsmlv2StatesEnum.SEARCH_REQUEST_START_TAG,
                 searchRequestCreation ) );
 
@@ -2235,40 +2216,40 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
 
         // State: [ABANDON_REQUEST_START_TAG] - Tag: </abandonRequest>
         super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_START_TAG.ordinal()]
-            .put( new Tag( ABANDON_REQUEST, Tag.END ), new GrammarTransition(
+            .put( new Tag( DsmlLiterals.ABANDON_REQUEST, Tag.END ), new GrammarTransition(
                 Dsmlv2StatesEnum.ABANDON_REQUEST_START_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) );
 
         // State: [ABANDON_REQUEST_START_TAG] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_START_TAG.ordinal()].put( new Tag( CONTROL, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.ABANDON_REQUEST_START_TAG,
                 Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_START_TAG, controlCreation ) );
 
         // State: [ABANDON_REQUEST_CONTROL_START_TAG] - Tag: <controlValue>
         super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_START_TAG.ordinal()].put(
-            new Tag( CONTROL_VALUE, Tag.START ), new GrammarTransition(
+            new Tag( DsmlLiterals.CONTROL_VALUE, Tag.START ), new GrammarTransition(
                 Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROLVALUE_END_TAG, controlValueCreation ) );
 
         // State: [ABANDON_REQUEST_CONTROLVALUE_END_TAG] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( CONTROL,
+        super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROLVALUE_END_TAG,
                 Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_END_TAG, null ) );
 
         // State: [ABANDON_REQUEST_CONTROL_START_TAG] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( CONTROL,
+        super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_END_TAG, null ) );
 
         // State: [ABANDON_REQUEST_CONTROL_END_TAG] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( CONTROL,
+        super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_END_TAG,
                 Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_START_TAG, controlCreation ) );
 
         // State: [ABANDON_REQUEST_CONTROL_END_TAG] - Tag: </abandonRequest>
-        super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( ABANDON_REQUEST,
+        super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.ABANDON_REQUEST,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_END_TAG,
                 Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) );
@@ -2284,70 +2265,70 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
         super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_ATTR_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>();
 
         // state: [ADD_REQUEST_START_TAG] -> Tag: </addRequest>
-        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_START_TAG.ordinal()].put( new Tag( ADD_REQUEST, Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.ADD_REQUEST, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_START_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) );
 
         // State: [ADD_REQUEST_START_TAG] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_START_TAG.ordinal()].put( new Tag( CONTROL, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_START_TAG,
                 Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_START_TAG, controlCreation ) );
 
         // State: [ADD_REQUEST_CONTROL_START_TAG] - Tag: <controlValue>
-        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( CONTROL_VALUE,
+        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL_VALUE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.ADD_REQUEST_CONTROLVALUE_END_TAG, controlValueCreation ) );
 
         // State: [ADD_REQUEST_CONTROLVALUE_END_TAG] - Tag: </control>
         super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put(
-            new Tag( CONTROL, Tag.END ),
+            new Tag( DsmlLiterals.CONTROL, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_CONTROLVALUE_END_TAG,
                 Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG, null ) );
 
         // State: [ADD_REQUEST_CONTROL_START_TAG] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( CONTROL, Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG, null ) );
 
         // State: [ADD_REQUEST_CONTROL_END_TAG] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( CONTROL, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG,
                 Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_START_TAG, controlCreation ) );
 
         // State: [ADD_REQUEST_CONTROL_END_TAG] - Tag: </addRequest>
         super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG.ordinal()].put(
-            new Tag( ADD_REQUEST, Tag.END ),
+            new Tag( DsmlLiterals.ADD_REQUEST, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP,
                 null ) );
 
         // State: [ADD_REQUEST_START_TAG] - Tag: <attr>
-        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_START_TAG.ordinal()].put( new Tag( ATTR, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTR, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_START_TAG, Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG,
                 addRequestAddAttribute ) );
 
         // State: [ADD_REQUEST_CONTROL_END_TAG] - Tag: <attr>
-        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( ATTR, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTR, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG,
                 Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG, addRequestAddAttribute ) );
 
         // State: [ADD_REQUEST_ATTR_END_TAG] - Tag: <attr>
-        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_ATTR_END_TAG.ordinal()].put( new Tag( ATTR, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_ATTR_END_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTR, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_ATTR_END_TAG,
                 Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG, addRequestAddAttribute ) );
 
         // State: [ADD_REQUEST_ATTR_START_TAG] - Tag: </attr>
-        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG.ordinal()].put( new Tag( ATTR, Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTR, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG,
                 Dsmlv2StatesEnum.ADD_REQUEST_ATTR_END_TAG, null ) );
 
         // State: [ADD_REQUEST_ATTR_START_TAG] - Tag: <value>
-        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG.ordinal()].put( new Tag( VALUE, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG.ordinal()].put( new Tag( DsmlLiterals.VALUE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG,
                 Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG, addRequestAddValue ) );
 
         // State: [ADD_REQUEST_ATTR_END_TAG] - Tag: </addRequest>
         super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_ATTR_END_TAG.ordinal()]
-            .put( new Tag( ADD_REQUEST, Tag.END ), new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_ATTR_END_TAG,
+            .put( new Tag( DsmlLiterals.ADD_REQUEST, Tag.END ), new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_ATTR_END_TAG,
                 Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) );
 
         //====================================================
@@ -2359,41 +2340,41 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
         super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_CONTROLVALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>();
 
         // state: [AUTH_REQUEST_START_TAG] -> Tag: </authRequest>
-        super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_START_TAG.ordinal()].put( new Tag( "authRequest", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.AUTH_REQUEST, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.AUTH_REQUEST_START_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) );
 
         // State: [AUTH_REQUEST_START_TAG] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_START_TAG.ordinal()].put( new Tag( CONTROL, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.AUTH_REQUEST_START_TAG,
                 Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_START_TAG, controlCreation ) );
 
         // State: [AUTH_REQUEST_CONTROL_START_TAG] - Tag: <controlValue>
-        super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( CONTROL_VALUE,
+        super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL_VALUE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.AUTH_REQUEST_CONTROLVALUE_END_TAG, controlValueCreation ) );
 
         // State: [AUTH_REQUEST_CONTROLVALUE_END_TAG] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( CONTROL,
+        super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.AUTH_REQUEST_CONTROLVALUE_END_TAG,
                 Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_END_TAG, null ) );
 
         // State: [AUTH_REQUEST_CONTROL_START_TAG] - Tag: </control>
         super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_START_TAG.ordinal()].put(
-            new Tag( CONTROL, Tag.END ),
+            new Tag( DsmlLiterals.CONTROL, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_END_TAG, null ) );
 
         // State: [AUTH_REQUEST_CONTROL_END_TAG] - Tag: <control>
         super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_END_TAG.ordinal()].put(
-            new Tag( CONTROL, Tag.START ),
+            new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_END_TAG,
                 Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_START_TAG, controlCreation ) );
 
         // State: [AUTH_REQUEST_CONTROL_END_TAG] - Tag: </authRequest>
         super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_END_TAG.ordinal()].put(
-            new Tag( "authRequest", Tag.END ),
+            new Tag( DsmlLiterals.AUTH_REQUEST, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_END_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP,
                 null ) );
 
@@ -2409,66 +2390,66 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
         super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_VALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>();
 
         // State: [COMPARE_REQUEST_START_TAG] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_START_TAG.ordinal()].put( new Tag( CONTROL, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.COMPARE_REQUEST_START_TAG,
                 Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_START_TAG, controlCreation ) );
 
         // State: [COMPARE_REQUEST_CONTROL_START_TAG] - Tag: <controlValue>
         super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_START_TAG.ordinal()].put(
-            new Tag( CONTROL_VALUE, Tag.START ), new GrammarTransition(
+            new Tag( DsmlLiterals.CONTROL_VALUE, Tag.START ), new GrammarTransition(
                 Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROLVALUE_END_TAG, controlValueCreation ) );
 
         // State: [COMPARE_REQUEST_CONTROLVALUE_END_TAG] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( CONTROL,
+        super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROLVALUE_END_TAG,
                 Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG, null ) );
 
         // State: [COMPARE_REQUEST_CONTROL_START_TAG] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( CONTROL,
+        super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG, null ) );
 
         // State: [COMPARE_REQUEST_CONTROL_END_TAG] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( CONTROL,
+        super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG,
                 Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_START_TAG, controlCreation ) );
 
         // State: [COMPARE_REQUEST_CONTROL_END_TAG] - Tag: </compareRequest>
-        super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( COMPARE_REQUEST,
+        super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.COMPARE_REQUEST,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG,
                 Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) );
 
         // State: [COMPARE_REQUEST_START_TAG] - Tag: <assertion>
-        super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_START_TAG.ordinal()].put( new Tag( "assertion", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.ASSERTION, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.COMPARE_REQUEST_ASSERTION_START_TAG, compareRequestAddAssertion ) );
 
         // State: [COMPARE_REQUEST_CONTROL_END_TAG] - Tag: <assertion>
-        super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( "assertion",
+        super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.ASSERTION,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG,
                 Dsmlv2StatesEnum.COMPARE_REQUEST_ASSERTION_START_TAG, compareRequestAddAssertion ) );
 
         // State: [COMPARE_REQUEST_ASSERTION_START_TAG] - Tag: <value>
-        super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_ASSERTION_START_TAG.ordinal()].put( new Tag( VALUE,
+        super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_ASSERTION_START_TAG.ordinal()].put( new Tag( DsmlLiterals.VALUE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.COMPARE_REQUEST_ASSERTION_START_TAG,
                 Dsmlv2StatesEnum.COMPARE_REQUEST_VALUE_END_TAG, compareRequestAddValue ) );
 
         //State: [COMPARE_REQUEST_VALUE_END_TAG] - Tag: </assertion>
         super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_VALUE_END_TAG.ordinal()].put(
-            new Tag( "assertion", Tag.END ),
+            new Tag( DsmlLiterals.ASSERTION, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.COMPARE_REQUEST_VALUE_END_TAG,
                 Dsmlv2StatesEnum.COMPARE_REQUEST_ASSERTION_END_TAG, null ) );
 
         // State: [COMPARE_REQUEST_ASSERTION_END_TAG] - Tag: </compareRequest>
         super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_ASSERTION_END_TAG.ordinal()].put(
-            new Tag( COMPARE_REQUEST, Tag.END ), new GrammarTransition(
+            new Tag( DsmlLiterals.COMPARE_REQUEST, Tag.END ), new GrammarTransition(
                 Dsmlv2StatesEnum.COMPARE_REQUEST_ASSERTION_END_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) );
 
         //====================================================
@@ -2480,39 +2461,39 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
         super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_CONTROLVALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>();
 
         // State: [DEL_REQUEST_START_TAG] - Tag: </delRequest>
-        super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_START_TAG.ordinal()].put( new Tag( DEL_REQUEST, Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.DEL_REQUEST, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.DEL_REQUEST_START_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) );
 
         // State: [DEL_REQUEST_START_TAG] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_START_TAG.ordinal()].put( new Tag( CONTROL, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.DEL_REQUEST_START_TAG,
                 Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_START_TAG, controlCreation ) );
 
         // State: [DEL_REQUEST_CONTROL_START_TAG] - Tag: <controlValue>
-        super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( CONTROL_VALUE,
+        super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL_VALUE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.DEL_REQUEST_CONTROLVALUE_END_TAG, controlValueCreation ) );
 
         // State: [DEL_REQUEST_CONTROLVALUE_END_TAG] - Tag: </control>
         super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put(
-            new Tag( CONTROL, Tag.END ),
+            new Tag( DsmlLiterals.CONTROL, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.DEL_REQUEST_CONTROLVALUE_END_TAG,
                 Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_END_TAG, null ) );
 
         // State: [DEL_REQUEST_CONTROL_START_TAG] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( CONTROL, Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_END_TAG, null ) );
 
         // State: [DEL_REQUEST_CONTROL_END_TAG] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( CONTROL, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_END_TAG,
                 Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_START_TAG, controlCreation ) );
 
         // State: [DEL_REQUEST_CONTROL_END_TAG] - Tag: </delRequest>
         super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_END_TAG.ordinal()].put(
-            new Tag( DEL_REQUEST, Tag.END ),
+            new Tag( DsmlLiterals.DEL_REQUEST, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_END_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP,
                 null ) );
 
@@ -2527,66 +2508,66 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
         super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTVALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>();
 
         // State: [EXTENDED_REQUEST_START_TAG] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_START_TAG.ordinal()].put( new Tag( CONTROL, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_REQUEST_START_TAG,
                 Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_START_TAG, controlCreation ) );
 
         // State: [EXTENDED_REQUEST_CONTROL_START_TAG] - Tag: <controlValue>
         super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_START_TAG.ordinal()].put(
-            new Tag( CONTROL_VALUE, Tag.START ), new GrammarTransition(
+            new Tag( DsmlLiterals.CONTROL_VALUE, Tag.START ), new GrammarTransition(
                 Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROLVALUE_END_TAG, controlValueCreation ) );
 
         // State: [EXTENDED_REQUEST_CONTROLVALUE_END_TAG] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( CONTROL,
+        super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROLVALUE_END_TAG,
                 Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG, null ) );
 
         // State: [EXTENDED_REQUEST_CONTROL_START_TAG] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( CONTROL,
+        super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG, null ) );
 
         // State: [EXTENDED_REQUEST_CONTROL_END_TAG] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( CONTROL,
+        super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG,
                 Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_START_TAG, controlCreation ) );
 
         // State: [EXTENDED_REQUEST_CONTROL_END_TAG] - Tag: </extendedRequest>
         super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG.ordinal()].put(
-            new Tag( EXTENDED_REQUEST, Tag.END ), new GrammarTransition(
+            new Tag( DsmlLiterals.EXTENDED_REQUEST, Tag.END ), new GrammarTransition(
                 Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) );
 
         // State: [EXTENDED_REQUEST_START_TAG] - Tag: <requestName>
         super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_START_TAG.ordinal()].put(
-            new Tag( "requestName", Tag.START ),
+            new Tag( DsmlLiterals.REQUEST_NAME, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_REQUEST_START_TAG,
                 Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTNAME_END_TAG, extendedRequestAddName ) );
 
         // State: [EXTENDED_REQUEST_CONTROL_END_TAG] - Tag: <requestName>
-        super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( "requestName",
+        super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.REQUEST_NAME,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG,
                 Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTNAME_END_TAG, extendedRequestAddName ) );
 
         // State: [EXTENDED_REQUEST_REQUESTNAME_END_TAG] - Tag: </extendedRequest>
         super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTNAME_END_TAG.ordinal()].put( new Tag(
-            EXTENDED_REQUEST,
+            DsmlLiterals.EXTENDED_REQUEST,
             Tag.END ), new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTNAME_END_TAG,
             Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) );
 
         // State: [EXTENDED_REQUEST_REQUESTNAME_END_TAG] - Tag: <requestValue>
         super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTNAME_END_TAG.ordinal()].put( new Tag(
-            "requestValue",
+            DsmlLiterals.REQUEST_VALUE,
             Tag.START ), new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTNAME_END_TAG,
             Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTVALUE_END_TAG, extendedRequestAddValue ) );
 
         // State: [EXTENDED_REQUEST_REQUESTVALUE_END_TAG] - Tag: </requestRequest>
         super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTVALUE_END_TAG.ordinal()].put( new Tag(
-            EXTENDED_REQUEST,
+            DsmlLiterals.EXTENDED_REQUEST,
             Tag.END ), new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTVALUE_END_TAG,
             Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) );
 
@@ -2600,41 +2581,41 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
 
         // State: [MODIFY_DN_REQUEST_START_TAG] - Tag: </modDNRequest>
         super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_START_TAG.ordinal()].put(
-            new Tag( MOD_DN_REQUEST, Tag.END ),
+            new Tag( DsmlLiterals.MOD_DN_REQUEST, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.MODIFY_DN_REQUEST_START_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP,
                 null ) );
 
         // State: [MODIFY_DN_REQUEST_START_TAG] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_START_TAG.ordinal()].put( new Tag( CONTROL, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.MODIFY_DN_REQUEST_START_TAG,
                 Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_START_TAG, controlCreation ) );
 
         // State: [MODIFY_DN_REQUEST_CONTROL_START_TAG] - Tag: <controlValue>
         super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_START_TAG.ordinal()].put(
-            new Tag( CONTROL_VALUE, Tag.START ), new GrammarTransition(
+            new Tag( DsmlLiterals.CONTROL_VALUE, Tag.START ), new GrammarTransition(
                 Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROLVALUE_END_TAG, controlValueCreation ) );
 
         // State: [MODIFY_DN_REQUEST_CONTROLVALUE_END_TAG] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( CONTROL,
+        super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROLVALUE_END_TAG,
                 Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_END_TAG, null ) );
 
         // State: [MODIFY_DN_REQUEST_CONTROL_START_TAG] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( CONTROL,
+        super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_END_TAG, null ) );
 
         // State: [MODIFY_DN_REQUEST_CONTROL_END_TAG] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( CONTROL,
+        super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_END_TAG,
                 Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_START_TAG, controlCreation ) );
 
         // State: [MODIFY_DN_REQUEST_CONTROL_END_TAG] - Tag: </modDNRequest>
-        super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( MOD_DN_REQUEST,
+        super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.MOD_DN_REQUEST,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_END_TAG,
                 Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) );
@@ -2652,88 +2633,88 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
 
         // State: [MODIFY_REQUEST_START_TAG] - Tag: </modifyRequest>
         super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_START_TAG.ordinal()]
-            .put( new Tag( MODIFY_REQUEST, Tag.END ), new GrammarTransition(
+            .put( new Tag( DsmlLiterals.MODIFY_REQUEST, Tag.END ), new GrammarTransition(
                 Dsmlv2StatesEnum.MODIFY_REQUEST_START_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) );
 
         // State: [MODIFY_REQUEST_START_TAG] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_START_TAG.ordinal()].put( new Tag( CONTROL, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_START_TAG,
                 Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_START_TAG, controlCreation ) );
 
         // State: [MODIFY_REQUEST_CONTROL_START_TAG] - Tag: <controlValue>
-        super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( CONTROL_VALUE,
+        super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL_VALUE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROLVALUE_END_TAG, controlValueCreation ) );
 
         // State: [MODIFY_REQUEST_CONTROLVALUE_END_TAG] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( CONTROL,
+        super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROLVALUE_END_TAG,
                 Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG, null ) );
 
         // State: [MODIFY_REQUEST_CONTROL_START_TAG] - Tag: </control>
         super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_START_TAG.ordinal()].put(
-            new Tag( CONTROL, Tag.END ),
+            new Tag( DsmlLiterals.CONTROL, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG, null ) );
 
         // State: [MODIFY_REQUEST_CONTROL_END_TAG] - Tag: <control>
         super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG.ordinal()].put(
-            new Tag( CONTROL, Tag.START ),
+            new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG,
                 Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_START_TAG, controlCreation ) );
 
         // State: [MODIFY_REQUEST_CONTROL_END_TAG] - Tag: </modifyRequest>
-        super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( MODIFY_REQUEST,
+        super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.MODIFY_REQUEST,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP,
                 null ) );
 
         // State: [MODIFY_REQUEST_CONTROL_END_TAG] - Tag: <modification>
-        super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( MODIFICATION,
+        super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.MODIFICATION,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG,
                 Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_START_TAG, modifyRequestAddModification ) );
 
         // State: [MODIFY_REQUEST_START_TAG] - Tag: <modification>
         super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_START_TAG.ordinal()].put(
-            new Tag( MODIFICATION, Tag.START ),
+            new Tag( DsmlLiterals.MODIFICATION, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_START_TAG,
                 Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_START_TAG, modifyRequestAddModification ) );
 
         // State: [MODIFY_REQUEST_MODIFICATION_END_TAG] - Tag: <modification>
         super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_END_TAG.ordinal()].put(
-            new Tag( MODIFICATION, Tag.START ), new GrammarTransition(
+            new Tag( DsmlLiterals.MODIFICATION, Tag.START ), new GrammarTransition(
                 Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_END_TAG,
                 Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_START_TAG, modifyRequestAddModification ) );
 
         // State: [MODIFY_REQUEST_MODIFICATION_START_TAG] - Tag: </modification>
         super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_START_TAG.ordinal()].put(
-            new Tag( MODIFICATION, Tag.END ), new GrammarTransition(
+            new Tag( DsmlLiterals.MODIFICATION, Tag.END ), new GrammarTransition(
                 Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_START_TAG,
                 Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_END_TAG, null ) );
 
         // State: [MODIFY_REQUEST_MODIFICATION_START_TAG] - Tag: <value>
-        super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_START_TAG.ordinal()].put( new Tag( VALUE,
+        super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_START_TAG.ordinal()].put( new Tag( DsmlLiterals.VALUE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_START_TAG,
                 Dsmlv2StatesEnum.MODIFY_REQUEST_VALUE_END_TAG, modifyRequestAddValue ) );
 
         // State: [MODIFY_REQUEST_VALUE_END_TAG] - Tag: <value>
-        super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_VALUE_END_TAG.ordinal()].put( new Tag( VALUE, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_VALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.VALUE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_VALUE_END_TAG,
                 Dsmlv2StatesEnum.MODIFY_REQUEST_VALUE_END_TAG, modifyRequestAddValue ) );
 
         // State: [MODIFY_REQUEST_VALUE_END_TAG] - Tag: </modification>
-        super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_VALUE_END_TAG.ordinal()].put( new Tag( MODIFICATION,
+        super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_VALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.MODIFICATION,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_VALUE_END_TAG,
                 Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_END_TAG, null ) );
 
         // State: [MODIFY_REQUEST_MODIFICATION_END_TAG] - Tag: </modifyRequest>
         super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_END_TAG.ordinal()].put(
-            new Tag( MODIFY_REQUEST, Tag.END ), new GrammarTransition(
+            new Tag( DsmlLiterals.MODIFY_REQUEST, Tag.END ), new GrammarTransition(
                 Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_END_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) );
 
         //====================================================
@@ -2749,72 +2730,72 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
         super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>();
 
         // State: [SEARCH_REQUEST_START_TAG] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_START_TAG.ordinal()].put( new Tag( CONTROL, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_START_TAG, controlCreation ) );
 
         // State: [SEARCH_REQUEST_CONTROL_START_TAG] - Tag: <controlValue>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( CONTROL_VALUE,
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL_VALUE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROLVALUE_END_TAG, controlValueCreation ) );
 
         // State: [SEARCH_REQUEST_CONTROLVALUE_END_TAG] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( CONTROL,
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROLVALUE_END_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_END_TAG, null ) );
 
         // State: [SEARCH_REQUEST_CONTROL_START_TAG] - Tag: </control>
         super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_START_TAG.ordinal()].put(
-            new Tag( CONTROL, Tag.END ),
+            new Tag( DsmlLiterals.CONTROL, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_END_TAG, null ) );
 
         // State: [SEARCH_REQUEST_CONTROL_END_TAG] - Tag: <control>
         super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_END_TAG.ordinal()].put(
-            new Tag( CONTROL, Tag.START ),
+            new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_END_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_START_TAG, controlCreation ) );
 
         // State: [SEARCH_REQUEST_FILTER_END_TAG] - Tag: </searchRequest>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( SEARCH_REQUEST,
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.SEARCH_REQUEST,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_END_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP,
                 storeFilter ) );
 
         // State: [SEARCH_REQUEST_ATTRIBUTES_START_TAG] - Tag: </attributes>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_START_TAG.ordinal()].put( new Tag( "attributes",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_START_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTRIBUTES,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_END_TAG, null ) );
 
         // State: [SEARCH_REQUEST_ATTRIBUTES_START_TAG] - Tag: <attribute>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_START_TAG.ordinal()].put( new Tag( "attribute",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_START_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTRIBUTE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_START_TAG, searchRequestAddAttribute ) );
 
         // State: [SEARCH_REQUEST_ATTRIBUTE_START_TAG] - Tag: </attribute>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_START_TAG.ordinal()].put( new Tag( "attribute",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_START_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTRIBUTE,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_END_TAG, null ) );
 
         // State: [SEARCH_REQUEST_ATTRIBUTE_END_TAG] - Tag: <attribute>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_END_TAG.ordinal()].put( new Tag( "attribute",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTRIBUTE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_END_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_START_TAG, searchRequestAddAttribute ) );
 
         // State: [SEARCH_REQUEST_ATTRIBUTE_END_TAG] - Tag: </attributes>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_END_TAG.ordinal()].put( new Tag( "attributes",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTRIBUTES,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_END_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_END_TAG, null ) );
 
         // State: [SEARCH_REQUEST_ATTRIBUTES_END_TAG] - Tag: </searchRequest>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_END_TAG.ordinal()].put( new Tag( SEARCH_REQUEST,
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_END_TAG.ordinal()].put( new Tag( DsmlLiterals.SEARCH_REQUEST,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_END_TAG,
                 Dsmlv2StatesEnum.BATCHREQUEST_LOOP, storeFilter ) );
@@ -2835,98 +2816,98 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
         super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>();
 
         // State: [SEARCH_REQUEST_START_TAG] - Tag: <filter>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_START_TAG.ordinal()].put( new Tag( "filter", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.FILTER, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG, null ) );
 
         // State: [SEARCH_REQUEST_CONTROL_END_TAG] - Tag: <filter>
         super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_END_TAG.ordinal()].put(
-            new Tag( "filter", Tag.START ),
+            new Tag( DsmlLiterals.FILTER, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_END_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG, null ) );
 
         //*** AND ***
         // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <and>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( "and", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( DsmlLiterals.AND, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, andFilterCreation ) );
 
         // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <and>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( "and", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.AND, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, andFilterCreation ) );
 
         // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: </and>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( "and", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.AND, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, connectorFilterClose ) );
 
         //*** OR ***
         // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <or>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( "or", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( DsmlLiterals.OR, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, orFilterCreation ) );
 
         // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <or>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( "or", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.OR, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, orFilterCreation ) );
 
         // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: </or>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( "or", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.OR, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, connectorFilterClose ) );
 
         //*** NOT ***
         // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <not>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( "not", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( DsmlLiterals.NOT, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, notFilterCreation ) );
 
         // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <not>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( "not", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.NOT, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, notFilterCreation ) );
 
         // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: </not>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( "not", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.NOT, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, connectorFilterClose ) );
 
-        //*** SUBSTRINGS ***
+        //*** DsmlLiterals.SUBSTRINGS ***
         // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <substrings>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( SUBSTRINGS,
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( DsmlLiterals.SUBSTRINGS,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG, substringsFilterCreation ) );
 
         // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <substrings>
         super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put(
-            new Tag( SUBSTRINGS, Tag.START ),
+            new Tag( DsmlLiterals.SUBSTRINGS, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG, substringsFilterCreation ) );
 
         //*** EQUALITY MATCH ***
         // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <equalityMatch>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( "equalityMatch",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( DsmlLiterals.EQUALITY_MATCH,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_EQUALITYMATCH_START_TAG, equalityMatchFilterCreation ) );
 
         // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <equalityMatch>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( "equalityMatch",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.EQUALITY_MATCH,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_EQUALITYMATCH_START_TAG, equalityMatchFilterCreation ) );
 
         // State: [SEARCH_REQUEST_EQUALITYMATCH_START_TAG] - Tag: <value>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_EQUALITYMATCH_START_TAG.ordinal()].put( new Tag( VALUE,
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_EQUALITYMATCH_START_TAG.ordinal()].put( new Tag( DsmlLiterals.VALUE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_EQUALITYMATCH_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG, filterAddValue ) );
 
         // State: [SEARCH_REQUEST_VALUE_END_TAG] - Tag: </equalityMatch>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG.ordinal()].put( new Tag( "equalityMatch",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.EQUALITY_MATCH,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, null ) );
@@ -2934,135 +2915,135 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
         //*** GREATER OR EQUAL ***
         // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <greaterOrEqual>
         super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put(
-            new Tag( "greaterOrEqual", Tag.START ), new GrammarTransition(
+            new Tag( DsmlLiterals.GREATER_OR_EQUAL, Tag.START ), new GrammarTransition(
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_GREATEROREQUAL_START_TAG, greaterOrEqualFilterCreation ) );
 
         // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <greaterOrEqual>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( "greaterOrEqual",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.GREATER_OR_EQUAL,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_GREATEROREQUAL_START_TAG, greaterOrEqualFilterCreation ) );
 
         // State: [SEARCH_REQUEST_GREATEROREQUAL_START_TAG] - Tag: <value>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_GREATEROREQUAL_START_TAG.ordinal()].put( new Tag( VALUE,
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_GREATEROREQUAL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.VALUE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_GREATEROREQUAL_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG, filterAddValue ) );
 
         // State: [SEARCH_REQUEST_VALUE_END_TAG] - Tag: </greaterOrEqual>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG.ordinal()].put( new Tag( "greaterOrEqual",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.GREATER_OR_EQUAL,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, null ) );
 
         //*** LESS OR EQUAL ***
         // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <lessOrEqual>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( "lessOrEqual",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( DsmlLiterals.LESS_OR_EQUAL,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_LESSOREQUAL_START_TAG, lessOrEqualFilterCreation ) );
 
         // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <lessOrEqual>
         super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put(
-            new Tag( "lessOrEqual", Tag.START ),
+            new Tag( DsmlLiterals.LESS_OR_EQUAL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_LESSOREQUAL_START_TAG, lessOrEqualFilterCreation ) );
 
         // State: [SEARCH_REQUEST_LESSOREQUAL_START_TAG] - Tag: <value>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_LESSOREQUAL_START_TAG.ordinal()].put( new Tag( VALUE,
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_LESSOREQUAL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.VALUE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_LESSOREQUAL_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG, filterAddValue ) );
 
         // State: [SEARCH_REQUEST_VALUE_END_TAG] - Tag: </lessOrEqual>
         super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG.ordinal()].put(
-            new Tag( "lessOrEqual", Tag.END ),
+            new Tag( DsmlLiterals.LESS_OR_EQUAL, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, null ) );
 
         //*** LESS OR EQUAL ***
         // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <approxMatch>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( "approxMatch",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( DsmlLiterals.APPROX_MATCH,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_APPROXMATCH_START_TAG, approxMatchFilterCreation ) );
 
         // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <approxMatch>
         super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put(
-            new Tag( "approxMatch", Tag.START ),
+            new Tag( DsmlLiterals.APPROX_MATCH, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_APPROXMATCH_START_TAG, approxMatchFilterCreation ) );
 
         // State: [SEARCH_REQUEST_APPROXMATCH_START_TAG] - Tag: <value>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_APPROXMATCH_START_TAG.ordinal()].put( new Tag( VALUE,
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_APPROXMATCH_START_TAG.ordinal()].put( new Tag( DsmlLiterals.VALUE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_APPROXMATCH_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG, filterAddValue ) );
 
         // State: [SEARCH_REQUEST_VALUE_END_TAG] - Tag: </approxMatch>
         super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG.ordinal()].put(
-            new Tag( "approxMatch", Tag.END ),
+            new Tag( DsmlLiterals.APPROX_MATCH, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, null ) );
 
         //*** PRESENT ***
         // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <present>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( "present",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( DsmlLiterals.PRESENT,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_PRESENT_START_TAG, presentFilterCreation ) );
 
         // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <present>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( "present", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.PRESENT, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_PRESENT_START_TAG, presentFilterCreation ) );
 
         // State: [SEARCH_REQUEST_PRESENT_START_TAG] - Tag: </present>
         super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_PRESENT_START_TAG.ordinal()].put(
-            new Tag( "present", Tag.END ),
+            new Tag( DsmlLiterals.PRESENT, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_PRESENT_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, null ) );
 
         //*** EXTENSIBLE MATCH ***
         // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <extensibleMatch>
         super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put(
-            new Tag( "extensibleMatch", Tag.START ), new GrammarTransition(
+            new Tag( DsmlLiterals.EXTENSIBLE_MATCH, Tag.START ), new GrammarTransition(
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_EXTENSIBLEMATCH_START_TAG, extensibleMatchFilterCreation ) );
 
         // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <extensibleMatch>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( "extensibleMatch",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.EXTENSIBLE_MATCH,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_EXTENSIBLEMATCH_START_TAG, extensibleMatchFilterCreation ) );
 
         // State: [SEARCH_REQUEST_EXTENSIBLEMATCH_START_TAG] - Tag: <value>
         super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_EXTENSIBLEMATCH_START_TAG.ordinal()].put(
-            new Tag( VALUE, Tag.START ), new GrammarTransition(
+            new Tag( DsmlLiterals.VALUE, Tag.START ), new GrammarTransition(
                 Dsmlv2StatesEnum.SEARCH_REQUEST_EXTENSIBLEMATCH_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_EXTENSIBLEMATCH_VALUE_END_TAG, extensibleMatchAddValue ) );
 
         // State: [SEARCH_REQUEST_EXTENSIBLEMATCH_VALUE_END_TAG] - Tag: </extensibleMatch>
         super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_EXTENSIBLEMATCH_VALUE_END_TAG.ordinal()].put( new Tag(
-            "extensibleMatch", Tag.END ), new GrammarTransition(
+            DsmlLiterals.EXTENSIBLE_MATCH, Tag.END ), new GrammarTransition(
             Dsmlv2StatesEnum.SEARCH_REQUEST_EXTENSIBLEMATCH_VALUE_END_TAG, Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP,
             null ) );
 
         //*** Filter (end) ***
         // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: </filter>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( "filter", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.FILTER, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_END_TAG, null ) );
 
         // State: [SEARCH_REQUEST_FILTER_END_TAG] - Tag: <attributes>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_END_TAG.ordinal()].put( new Tag( "attributes",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_END_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTRIBUTES,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_END_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_START_TAG, null ) );
 
         // State: [SEARCH_REQUEST_FILTER_END_TAG] - Tag: </searchRequest>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_END_TAG.ordinal()].put( new Tag( SEARCH_REQUEST,
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_END_TAG.ordinal()].put( new Tag( DsmlLiterals.SEARCH_REQUEST,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_END_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP,
                 storeFilter ) );
@@ -3077,64 +3058,64 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
         super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>();
 
         // State: [SEARCH_REQUEST_SUBSTRINGS_START_TAG] - Tag: </substrings>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG.ordinal()].put( new Tag( SUBSTRINGS,
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG.ordinal()].put( new Tag( DsmlLiterals.SUBSTRINGS,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, null ) );
 
         // State: [SEARCH_REQUEST_SUBSTRINGS_START_TAG] - Tag: <initial>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG.ordinal()].put( new Tag( "initial",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG.ordinal()].put( new Tag( DsmlLiterals.INITIAL,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_INITIAL_END_TAG, substringsFilterSetInitial ) );
 
         // State: [SEARCH_REQUEST_INITIAL_END_TAG] - Tag: <any>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_INITIAL_END_TAG.ordinal()].put( new Tag( "any", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_INITIAL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.ANY, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_INITIAL_END_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG, substringsFilterAddAny ) );
 
         // State: [SEARCH_REQUEST_INITIAL_END_TAG] - Tag: <final>
         super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_INITIAL_END_TAG.ordinal()].put(
-            new Tag( "final", Tag.START ),
+            new Tag( DsmlLiterals.FINAL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_INITIAL_END_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FINAL_END_TAG, substringsFilterSetFinal ) );
 
         // State: [SEARCH_REQUEST_INITIAL_END_TAG] - Tag: </substrings>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_INITIAL_END_TAG.ordinal()].put( new Tag( SUBSTRINGS,
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_INITIAL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.SUBSTRINGS,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_INITIAL_END_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, substringsFilterClose ) );
 
         // State: [SEARCH_REQUEST_SUBSTRINGS_START_TAG] - Tag: <any>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG.ordinal()].put( new Tag( "any",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG.ordinal()].put( new Tag( DsmlLiterals.ANY,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG, substringsFilterAddAny ) );
 
         // State: [SEARCH_REQUEST_ANY_END_TAG] - Tag: </any>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG.ordinal()].put( new Tag( "any", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG.ordinal()].put( new Tag( DsmlLiterals.ANY, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG, substringsFilterAddAny ) );
 
         // State: [SEARCH_REQUEST_ANY_END_TAG] - Tag: <final>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG.ordinal()].put( new Tag( "final", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG.ordinal()].put( new Tag( DsmlLiterals.FINAL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FINAL_END_TAG, substringsFilterSetFinal ) );
 
         // State: [SEARCH_REQUEST_ANY_END_TAG] - Tag: </substrings>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG.ordinal()].put( new Tag( SUBSTRINGS, Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG.ordinal()].put( new Tag( DsmlLiterals.SUBSTRINGS, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, substringsFilterClose ) );
 
         // State: [SEARCH_REQUEST_SUBSTRINGS_START_TAG] - Tag: <final>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG.ordinal()].put( new Tag( "final",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG.ordinal()].put( new Tag( DsmlLiterals.FINAL,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FINAL_END_TAG, substringsFilterSetFinal ) );
 
         // State: [SEARCH_REQUEST_FINAL_END_TAG] - Tag: </substrings>
         super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FINAL_END_TAG.ordinal()].put(
-            new Tag( SUBSTRINGS, Tag.END ),
+            new Tag( DsmlLiterals.SUBSTRINGS, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FINAL_END_TAG,
                 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, substringsFilterClose ) );
 
@@ -3148,34 +3129,34 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
         super.transitions[Dsmlv2StatesEnum.GRAMMAR_END.ordinal()] = new HashMap<Tag, GrammarTransition>();
 
         // State: [INIT_GRAMMAR_STATE] - Tag: <envelope>
-        super.transitions[Dsmlv2StatesEnum.INIT_GRAMMAR_STATE.ordinal()].put( new Tag( "envelope", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.INIT_GRAMMAR_STATE.ordinal()].put( new Tag( DsmlLiterals.ENVELOPE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.INIT_GRAMMAR_STATE, Dsmlv2StatesEnum.SOAP_ENVELOPE_START_TAG,
                 null ) );
 
         // state: [SOAP_ENVELOPE_START_TAG] -> Tag: <header>
-        super.transitions[Dsmlv2StatesEnum.SOAP_ENVELOPE_START_TAG.ordinal()].put( new Tag( "header", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SOAP_ENVELOPE_START_TAG.ordinal()].put( new Tag( DsmlLiterals.HEADER, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SOAP_ENVELOPE_START_TAG, Dsmlv2StatesEnum.SOAP_HEADER_START_TAG,
                 ParserUtils.READ_SOAP_HEADER ) );
 
         // state: [SOAP_HEADER_START_TAG] -> Tag: </header>
         super.transitions[Dsmlv2StatesEnum.SOAP_HEADER_START_TAG.ordinal()]
-            .put( new Tag( "header", Tag.END ),
+            .put( new Tag( DsmlLiterals.HEADER, Tag.END ),
                 new GrammarTransition( Dsmlv2StatesEnum.SOAP_HEADER_START_TAG, Dsmlv2StatesEnum.SOAP_HEADER_END_TAG,
                     null ) );
 
         // state: [SOAP_HEADER_END_TAG] -> Tag: <body>
-        super.transitions[Dsmlv2StatesEnum.SOAP_HEADER_END_TAG.ordinal()].put( new Tag( "body", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SOAP_HEADER_END_TAG.ordinal()].put( new Tag( DsmlLiterals.BODY, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SOAP_HEADER_END_TAG, Dsmlv2StatesEnum.SOAP_BODY_START_TAG, null ) );
 
         // state: [SOAP_BODY_START_TAG] -> Tag: <batchRequest>
-        super.transitions[Dsmlv2StatesEnum.SOAP_BODY_START_TAG.ordinal()].put( new Tag( BATCH_REQUEST, Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SOAP_BODY_START_TAG.ordinal()].put( new Tag( DsmlLiterals.BATCH_REQUEST, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SOAP_BODY_START_TAG, Dsmlv2StatesEnum.BATCHREQUEST_START_TAG,
                 batchRequestCreation ) );
 
         // the optional transition if no soap header is present
         // state: [SOAP_ENVELOPE_START_TAG] -> Tag: <body>
         super.transitions[Dsmlv2StatesEnum.SOAP_ENVELOPE_START_TAG.ordinal()]
-            .put( new Tag( "body", Tag.START ),
+            .put( new Tag( DsmlLiterals.BODY, Tag.START ),
                 new GrammarTransition( Dsmlv2StatesEnum.SOAP_ENVELOPE_START_TAG, Dsmlv2StatesEnum.SOAP_BODY_START_TAG,
                     null ) );
 
@@ -3183,10 +3164,10 @@ public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar
         // when the </batchRequest> tag is encountered by the parser and the corresponding action gets executed but in
         // a SOAP envelop we still have two more end tags(</body> and </envelope>) are left so we set those corresponding
         // current and next transition states always to GRAMMAR_END
-        super.transitions[Dsmlv2StatesEnum.GRAMMAR_END.ordinal()].put( new Tag( "body", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.GRAMMAR_END.ordinal()].put( new Tag( DsmlLiterals.BODY, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.GRAMMAR_END, Dsmlv2StatesEnum.GRAMMAR_END, null ) );
 
-        super.transitions[Dsmlv2StatesEnum.GRAMMAR_END.ordinal()].put( new Tag( "envelope", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.GRAMMAR_END.ordinal()].put( new Tag( DsmlLiterals.ENVELOPE, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.GRAMMAR_END, Dsmlv2StatesEnum.GRAMMAR_END, null ) );
 
         //------------------------------------------
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/ExtendedRequestDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/ExtendedRequestDsml.java
index 95346d1bd..faf923aa4 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/ExtendedRequestDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/ExtendedRequestDsml.java
@@ -21,6 +21,7 @@ package org.apache.directory.api.dsmlv2.request;
 
 
 import org.apache.directory.api.asn1.util.Oid;
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.dsmlv2.ParserUtils;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.Control;
@@ -80,20 +81,20 @@ public class ExtendedRequestDsml<Q extends ExtendedRequest, P extends ExtendedRe
         // Request Name
         if ( getDecorated().getRequestName() != null )
         {
-            element.addElement( "requestName" ).setText(
+            element.addElement( DsmlLiterals.REQUEST_NAME ).setText(
                 getDecorated().getRequestName() );
         }
 
         // Request Value        
-        Namespace xsdNamespace = new Namespace( "xsd", ParserUtils.XML_SCHEMA_URI );
-        Namespace xsiNamespace = new Namespace( "xsi", ParserUtils.XML_SCHEMA_INSTANCE_URI );
+        Namespace xsdNamespace = new Namespace( ParserUtils.XSD, ParserUtils.XML_SCHEMA_URI );
+        Namespace xsiNamespace = new Namespace( ParserUtils.XSI, ParserUtils.XML_SCHEMA_INSTANCE_URI );
         element.getDocument().getRootElement().add( xsdNamespace );
         element.getDocument().getRootElement().add( xsiNamespace );
 
-        Element valueElement = element.addElement( "requestValue" ).addText(
+        Element valueElement = element.addElement( DsmlLiterals.REQUEST_VALUE ).addText(
             ParserUtils.base64Encode( getRequestValue() ) );
-        valueElement.addAttribute( new QName( "type", xsiNamespace ),
-            "xsd:" + ParserUtils.BASE64BINARY );
+        valueElement.addAttribute( new QName( DsmlLiterals.TYPE, xsiNamespace ),
+            ParserUtils.XSD_COLON + ParserUtils.BASE64BINARY );
 
         return element;
     }
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/ModifyDNRequestDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/ModifyDNRequestDsml.java
index 42dbbb44e..5159d9bf2 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/ModifyDNRequestDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/ModifyDNRequestDsml.java
@@ -20,6 +20,7 @@
 package org.apache.directory.api.dsmlv2.request;
 
 
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.MessageTypeEnum;
@@ -86,22 +87,22 @@ public class ModifyDNRequestDsml
         // Dn
         if ( request.getName() != null )
         {
-            element.addAttribute( "dn", request.getName().getName() );
+            element.addAttribute( DsmlLiterals.DN, request.getName().getName() );
         }
 
         // NewRDN
         if ( request.getNewRdn() != null )
         {
-            element.addAttribute( "newrdn", request.getNewRdn().getName() );
+            element.addAttribute( DsmlLiterals.NEW_RDN, request.getNewRdn().getName() );
         }
 
         // DeleteOldRDN
-        element.addAttribute( "deleteoldrdn", request.getDeleteOldRdn() ? "true" : "false" );
+        element.addAttribute( DsmlLiterals.DELETE_OLD_RDN, request.getDeleteOldRdn() ? DsmlLiterals.TRUE : DsmlLiterals.FALSE );
 
         // NewSuperior
         if ( request.getNewRdn() != null )
         {
-            element.addAttribute( "newSuperior", request.getNewSuperior().getName() );
+            element.addAttribute( DsmlLiterals.NEW_SUPERIOR, request.getNewSuperior().getName() );
         }
 
         return element;
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/ModifyRequestDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/ModifyRequestDsml.java
index aa576c1f3..306eec688 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/ModifyRequestDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/ModifyRequestDsml.java
@@ -22,6 +22,8 @@ package org.apache.directory.api.dsmlv2.request;
 
 import java.util.Collection;
 
+import org.apache.commons.text.StringEscapeUtils;
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.dsmlv2.ParserUtils;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.entry.Attribute;
@@ -153,7 +155,7 @@ public class ModifyRequestDsml
         // Dn
         if ( request.getName() != null )
         {
-            element.addAttribute( "dn", request.getName().getName() );
+            element.addAttribute( DsmlLiterals.DN, request.getName().getName() );
         }
 
         // Modifications
@@ -161,32 +163,29 @@ public class ModifyRequestDsml
 
         for ( Modification modification : modifications )
         {
-            Element modElement = element.addElement( "modification" );
+            Element modElement = element.addElement( DsmlLiterals.MODIFICATION );
 
             if ( modification.getAttribute() != null )
             {
-                modElement.addAttribute( "name", modification.getAttribute().getId() );
+                modElement.addAttribute( DsmlLiterals.NAME, modification.getAttribute().getId() );
 
                 for ( Value value : modification.getAttribute() )
                 {
-                    if ( value.getString() != null )
+                    if ( value.isHumanReadable() )
                     {
-                        if ( ParserUtils.needsBase64Encoding( value.getString() ) )
-                        {
-                            Namespace xsdNamespace = new Namespace( "xsd", ParserUtils.XML_SCHEMA_URI );
-                            Namespace xsiNamespace = new Namespace( "xsi", ParserUtils.XML_SCHEMA_INSTANCE_URI );
-                            element.getDocument().getRootElement().add( xsdNamespace );
-                            element.getDocument().getRootElement().add( xsiNamespace );
-
-                            Element valueElement = modElement.addElement( "value" ).addText(
-                                ParserUtils.base64Encode( value.getString() ) );
-                            valueElement.addAttribute( new QName( "type", xsiNamespace ), "xsd:"
-                                + ParserUtils.BASE64BINARY );
-                        }
-                        else
-                        {
-                            modElement.addElement( "value" ).setText( value.getString() );
-                        }
+                        modElement.addElement( DsmlLiterals.VALUE ).setText( StringEscapeUtils.escapeXml11( value.getString() ) );
+                    }
+                    else
+                    {
+                        Namespace xsdNamespace = new Namespace( ParserUtils.XSD, ParserUtils.XML_SCHEMA_URI );
+                        Namespace xsiNamespace = new Namespace( ParserUtils.XSI, ParserUtils.XML_SCHEMA_INSTANCE_URI );
+                        element.getDocument().getRootElement().add( xsdNamespace );
+                        element.getDocument().getRootElement().add( xsiNamespace );
+
+                        Element valueElement = modElement.addElement( DsmlLiterals.VALUE ).addText(
+                            ParserUtils.base64Encode( value.getString() ) );
+                        valueElement.addAttribute( new QName( DsmlLiterals.TYPE, xsiNamespace ), ParserUtils.XSD_COLON
+                            + ParserUtils.BASE64BINARY );
                     }
                 }
             }
@@ -195,19 +194,19 @@ public class ModifyRequestDsml
 
             if ( operation == ModificationOperation.ADD_ATTRIBUTE )
             {
-                modElement.addAttribute( "operation", "add" );
+                modElement.addAttribute( DsmlLiterals.OPERATION, DsmlLiterals.ADD );
             }
             else if ( operation == ModificationOperation.REPLACE_ATTRIBUTE )
             {
-                modElement.addAttribute( "operation", "replace" );
+                modElement.addAttribute( DsmlLiterals.OPERATION, DsmlLiterals.REPLACE );
             }
             else if ( operation == ModificationOperation.REMOVE_ATTRIBUTE )
             {
-                modElement.addAttribute( "operation", "delete" );
+                modElement.addAttribute( DsmlLiterals.OPERATION, DsmlLiterals.DELETE );
             }
             else if ( operation == ModificationOperation.INCREMENT_ATTRIBUTE )
             {
-                modElement.addAttribute( "operation", "increment" );
+                modElement.addAttribute( DsmlLiterals.OPERATION, DsmlLiterals.INCREMENT );
             }
         }
 
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/SearchRequestDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/SearchRequestDsml.java
index aaf677636..f2006659c 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/SearchRequestDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/request/SearchRequestDsml.java
@@ -23,7 +23,9 @@ package org.apache.directory.api.dsmlv2.request;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.commons.text.StringEscapeUtils;
 import org.apache.directory.api.asn1.DecoderException;
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.dsmlv2.ParserUtils;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
@@ -53,6 +55,7 @@ import org.apache.directory.api.ldap.model.message.SearchRequestImpl;
 import org.apache.directory.api.ldap.model.message.SearchResultDone;
 import org.apache.directory.api.ldap.model.message.SearchScope;
 import org.apache.directory.api.ldap.model.name.Dn;
+import org.apache.directory.api.util.Strings;
 import org.dom4j.Element;
 import org.dom4j.Namespace;
 import org.dom4j.QName;
@@ -67,11 +70,6 @@ public class SearchRequestDsml
     extends AbstractResultResponseRequestDsml<SearchRequest, SearchResultDone>
     implements SearchRequest
 {
-    /** Some string constants */
-    private static final String DEREF_ALIASES = "derefAliases";
-    private static final String NAME = "name";
-    private static final String VALUE = "value";
-    
     /** A temporary storage for a terminal Filter */
     private Filter terminalFilter;
 
@@ -367,7 +365,7 @@ public class SearchRequestDsml
         // Dn
         if ( request.getBase() != null )
         {
-            element.addAttribute( "dn", request.getBase().getName() );
+            element.addAttribute( DsmlLiterals.DN, request.getBase().getName() );
         }
 
         // Scope
@@ -376,15 +374,15 @@ public class SearchRequestDsml
         {
             if ( scope == SearchScope.OBJECT )
             {
-                element.addAttribute( "scope", "baseObject" );
+                element.addAttribute( DsmlLiterals.SCOPE, DsmlLiterals.BASE_OBJECT );
             }
             else if ( scope == SearchScope.ONELEVEL )
             {
-                element.addAttribute( "scope", "singleLevel" );
+                element.addAttribute( DsmlLiterals.SCOPE, DsmlLiterals.SINGLE_LEVEL );
             }
             else if ( scope == SearchScope.SUBTREE )
             {
-                element.addAttribute( "scope", "wholeSubtree" );
+                element.addAttribute( DsmlLiterals.SCOPE, DsmlLiterals.WHOLE_SUBTREE );
             }
         }
 
@@ -394,19 +392,19 @@ public class SearchRequestDsml
         switch ( derefAliases )
         {
             case NEVER_DEREF_ALIASES:
-                element.addAttribute( DEREF_ALIASES, "neverDerefAliases" );
+                element.addAttribute( DsmlLiterals.DEREF_ALIASES, DsmlLiterals.NEVER_DEREF_ALIASES );
                 break;
 
             case DEREF_ALWAYS:
-                element.addAttribute( DEREF_ALIASES, "derefAlways" );
+                element.addAttribute( DsmlLiterals.DEREF_ALIASES, DsmlLiterals.DEREF_ALWAYS );
                 break;
 
             case DEREF_FINDING_BASE_OBJ:
-                element.addAttribute( DEREF_ALIASES, "derefFindingBaseObj" );
+                element.addAttribute( DsmlLiterals.DEREF_ALIASES, DsmlLiterals.DEREF_FINDING_BASE_OBJ );
                 break;
 
             case DEREF_IN_SEARCHING:
-                element.addAttribute( DEREF_ALIASES, "derefInSearching" );
+                element.addAttribute( DsmlLiterals.DEREF_ALIASES, DsmlLiterals.DEREF_IN_SEARCHING );
                 break;
 
             default:
@@ -416,23 +414,23 @@ public class SearchRequestDsml
         // SizeLimit
         if ( request.getSizeLimit() != 0L )
         {
-            element.addAttribute( "sizeLimit", Long.toString( request.getSizeLimit() ) );
+            element.addAttribute( DsmlLiterals.SIZE_LIMIT, Long.toString( request.getSizeLimit() ) );
         }
 
         // TimeLimit
         if ( request.getTimeLimit() != 0 )
         {
-            element.addAttribute( "timeLimit", Integer.toString( request.getTimeLimit() ) );
+            element.addAttribute( DsmlLiterals.TIME_LIMIT, Integer.toString( request.getTimeLimit() ) );
         }
 
         // TypesOnly
         if ( request.getTypesOnly() )
         {
-            element.addAttribute( "typesOnly", "true" );
+            element.addAttribute( DsmlLiterals.TYPES_ONLY,  DsmlLiterals.TRUE );
         }
 
         // Filter
-        Element filterElement = element.addElement( "filter" );
+        Element filterElement = element.addElement( DsmlLiterals.FILTER );
         toDsml( filterElement, request.getFilter() );
 
         // Attributes
@@ -440,11 +438,11 @@ public class SearchRequestDsml
 
         if ( !attributes.isEmpty() )
         {
-            Element attributesElement = element.addElement( "attributes" );
+            Element attributesElement = element.addElement( DsmlLiterals.ATTRIBUTES );
 
             for ( String entryAttribute : attributes )
             {
-                attributesElement.addElement( "attribute" ).addAttribute( NAME, entryAttribute );
+                attributesElement.addElement( DsmlLiterals.ATTRIBUTE ).addAttribute( DsmlLiterals.NAME, entryAttribute );
             }
         }
 
@@ -466,7 +464,7 @@ public class SearchRequestDsml
         // AND FILTER
         if ( filter instanceof AndNode )
         {
-            Element newElement = element.addElement( "and" );
+            Element newElement = element.addElement( DsmlLiterals.AND );
 
             List<ExprNode> filterList = ( ( AndNode ) filter ).getChildren();
 
@@ -479,7 +477,7 @@ public class SearchRequestDsml
         // OR FILTER
         else if ( filter instanceof OrNode )
         {
-            Element newElement = element.addElement( "or" );
+            Element newElement = element.addElement( DsmlLiterals.OR );
 
             List<ExprNode> filterList = ( ( OrNode ) filter ).getChildren();
 
@@ -492,7 +490,7 @@ public class SearchRequestDsml
         // NOT FILTER
         else if ( filter instanceof NotNode )
         {
-            Element newElement = element.addElement( "not" );
+            Element newElement = element.addElement( DsmlLiterals.NOT );
 
             toDsml( newElement, ( ( NotNode ) filter ).getFirstChild() );
         }
@@ -500,31 +498,31 @@ public class SearchRequestDsml
         // SUBSTRING FILTER
         else if ( filter instanceof SubstringNode )
         {
-            Element newElement = element.addElement( "substrings" );
+            Element newElement = element.addElement( DsmlLiterals.SUBSTRINGS );
 
             SubstringNode substringFilter = ( SubstringNode ) filter;
 
-            newElement.addAttribute( NAME, substringFilter.getAttribute() );
+            newElement.addAttribute( DsmlLiterals.NAME, substringFilter.getAttribute() );
 
             String initial = substringFilter.getInitial();
 
-            if ( ( initial != null ) && ( !"".equals( initial ) ) )
+            if ( Strings.isNotEmpty( initial ) )
             {
-                newElement.addElement( "initial" ).setText( initial );
+                newElement.addElement( DsmlLiterals.INITIAL ).setText( initial );
             }
 
             List<String> anyList = substringFilter.getAny();
 
             for ( int i = 0; i < anyList.size(); i++ )
             {
-                newElement.addElement( "any" ).setText( anyList.get( i ) );
+                newElement.addElement( DsmlLiterals.ANY ).setText( anyList.get( i ) );
             }
 
             String finalString = substringFilter.getFinal();
 
-            if ( ( finalString != null ) && ( !"".equals( finalString ) ) )
+            if ( Strings.isNotEmpty( finalString  ) )
             {
-                newElement.addElement( "final" ).setText( finalString );
+                newElement.addElement( DsmlLiterals.FINAL ).setText( finalString );
             }
         }
 
@@ -535,44 +533,44 @@ public class SearchRequestDsml
 
             if ( filter instanceof ApproximateNode )
             {
-                newElement = element.addElement( "approxMatch" );
+                newElement = element.addElement( DsmlLiterals.APPROX_MATCH );
             }
             else if ( filter instanceof EqualityNode )
             {
-                newElement = element.addElement( "equalityMatch" );
+                newElement = element.addElement( DsmlLiterals.EQUALITY_MATCH );
             }
             else if ( filter instanceof GreaterEqNode )
             {
-                newElement = element.addElement( "greaterOrEqual" );
+                newElement = element.addElement( DsmlLiterals.GREATER_OR_EQUAL );
             }
             else
             // it is a LessEqNode )
             {
-                newElement = element.addElement( "lessOrEqual" );
+                newElement = element.addElement( DsmlLiterals.LESS_OR_EQUAL );
             }
 
             String attributeName = ( ( SimpleNode<?> ) filter ).getAttribute();
-            newElement.addAttribute( NAME, attributeName );
+            newElement.addAttribute( DsmlLiterals.NAME, attributeName );
 
             Value value = ( ( SimpleNode<?> ) filter ).getValue();
             
             if ( value != null )
             {
-                if ( ParserUtils.needsBase64Encoding( value ) )
+                if ( value.isHumanReadable() )
+                {
+                    newElement.addElement( DsmlLiterals.VALUE ).setText( StringEscapeUtils.escapeXml11( value.getString() ) );
+                }
+                else
                 {
-                    Namespace xsdNamespace = new Namespace( "xsd", ParserUtils.XML_SCHEMA_URI );
-                    Namespace xsiNamespace = new Namespace( "xsi", ParserUtils.XML_SCHEMA_INSTANCE_URI );
+                    Namespace xsdNamespace = new Namespace( ParserUtils.XSD, ParserUtils.XML_SCHEMA_URI );
+                    Namespace xsiNamespace = new Namespace( ParserUtils.XSI, ParserUtils.XML_SCHEMA_INSTANCE_URI );
                     element.getDocument().getRootElement().add( xsdNamespace );
                     element.getDocument().getRootElement().add( xsiNamespace );
 
-                    Element valueElement = newElement.addElement( VALUE ).addText(
+                    Element valueElement = newElement.addElement( DsmlLiterals.VALUE ).addText(
                         ParserUtils.base64Encode( value ) );
                     valueElement
-                        .addAttribute( new QName( "type", xsiNamespace ), "xsd:" + ParserUtils.BASE64BINARY );
-                }
-                else
-                {
-                    newElement.addElement( VALUE ).setText( value.getString() );
+                        .addAttribute( new QName( DsmlLiterals.TYPE, xsiNamespace ), ParserUtils.XSD_COLON + ParserUtils.BASE64BINARY );
                 }
             }
         }
@@ -580,15 +578,15 @@ public class SearchRequestDsml
         // PRESENT FILTER
         else if ( filter instanceof PresenceNode )
         {
-            Element newElement = element.addElement( "present" );
+            Element newElement = element.addElement( DsmlLiterals.PRESENT );
 
-            newElement.addAttribute( NAME, ( ( PresenceNode ) filter ).getAttribute() );
+            newElement.addAttribute( DsmlLiterals.NAME, ( ( PresenceNode ) filter ).getAttribute() );
         }
 
         // EXTENSIBLEMATCH
         else if ( filter instanceof ExtensibleNode )
         {
-            Element newElement = element.addElement( "extensibleMatch" );
+            Element newElement = element.addElement( DsmlLiterals.EXTENSIBLE_MATCH );
 
             Value value = ( ( ExtensibleNode ) filter ).getValue();
             
@@ -596,30 +594,31 @@ public class SearchRequestDsml
             {
                 if ( ParserUtils.needsBase64Encoding( value ) )
                 {
-                    Namespace xsdNamespace = new Namespace( "xsd", ParserUtils.XML_SCHEMA_URI );
-                    Namespace xsiNamespace = new Namespace( "xsi", ParserUtils.XML_SCHEMA_INSTANCE_URI );
+                    Namespace xsdNamespace = new Namespace( ParserUtils.XSD, ParserUtils.XML_SCHEMA_URI );
+                    Namespace xsiNamespace = new Namespace( ParserUtils.XSI, ParserUtils.XML_SCHEMA_INSTANCE_URI );
                     element.getDocument().getRootElement().add( xsdNamespace );
                     element.getDocument().getRootElement().add( xsiNamespace );
 
-                    Element valueElement = newElement.addElement( VALUE ).addText(
+                    Element valueElement = newElement.addElement( DsmlLiterals.VALUE ).addText(
                         ParserUtils.base64Encode( value.getString() ) );
-                    valueElement.addAttribute( new QName( "type", xsiNamespace ), "xsd:" + ParserUtils.BASE64BINARY );
+                    valueElement.addAttribute( new QName( DsmlLiterals.TYPE, xsiNamespace ), ParserUtils.XSD_COLON + ParserUtils.BASE64BINARY );
                 }
                 else
                 {
-                    newElement.addElement( VALUE ).setText( value.getString() );
+                    newElement.addElement( DsmlLiterals.VALUE ).setText( value.getString() );
                 }
             }
 
             if ( ( ( ExtensibleNode ) filter ).hasDnAttributes() )
             {
-                newElement.addAttribute( "dnAttributes", "true" );
+                newElement.addAttribute( DsmlLiterals.DN_ATTRIBUTES,  DsmlLiterals.TRUE );
             }
 
             String matchingRule = ( ( ExtensibleNode ) filter ).getMatchingRuleId();
-            if ( ( matchingRule != null ) && ( "".equals( matchingRule ) ) )
+            
+            if ( Strings.isNotEmpty( matchingRule ) )
             {
-                newElement.addAttribute( "matchingRule", matchingRule );
+                newElement.addAttribute( DsmlLiterals.MATCHING_RULE, matchingRule );
             }
         }
     }
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/AddResponseDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/AddResponseDsml.java
index aecb19c2f..b28c3fd9f 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/AddResponseDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/AddResponseDsml.java
@@ -20,6 +20,7 @@
 package org.apache.directory.api.dsmlv2.response;
 
 
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.AddResponse;
 import org.apache.directory.api.ldap.model.message.AddResponseImpl;
@@ -36,9 +37,6 @@ import org.dom4j.tree.DefaultElement;
 public class AddResponseDsml extends AbstractResultResponseDsml<AddResponse>
     implements AddResponse
 {
-    private static final String ADD_RESPONSE_TAG = "addResponse";
-
-
     /**
      * Creates a new getDecoratedMessage() of AddResponseDsml.
      * 
@@ -82,11 +80,11 @@ public class AddResponseDsml extends AbstractResultResponseDsml<AddResponse>
 
         if ( root != null )
         {
-            element = root.addElement( ADD_RESPONSE_TAG );
+            element = root.addElement( DsmlLiterals.ADD_RESPONSE );
         }
         else
         {
-            element = new DefaultElement( ADD_RESPONSE_TAG );
+            element = new DefaultElement( DsmlLiterals.ADD_RESPONSE );
         }
 
         LdapResultDsml ldapResultDsml = new LdapResultDsml( getCodecService(),
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/BatchResponseDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/BatchResponseDsml.java
index ada055f1d..cac48f7b5 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/BatchResponseDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/BatchResponseDsml.java
@@ -24,6 +24,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.directory.api.dsmlv2.DsmlDecorator;
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.dsmlv2.ParserUtils;
 import org.apache.directory.api.ldap.model.message.Response;
 import org.dom4j.Document;
@@ -145,7 +146,7 @@ public class BatchResponseDsml
     public String toDsml( boolean prettyPrint )
     {
         Document document = DocumentHelper.createDocument();
-        Element element = document.addElement( "batchResponse" );
+        Element element = document.addElement( DsmlLiterals.BATCH_RESPONSE );
 
         element.add( ParserUtils.DSML_NAMESPACE );
         element.add( ParserUtils.XSD_NAMESPACE );
@@ -154,7 +155,7 @@ public class BatchResponseDsml
         // RequestID
         if ( requestID != 0 )
         {
-            element.addAttribute( "requestID", Integer.toString( requestID ) );
+            element.addAttribute( DsmlLiterals.REQUEST_ID, Integer.toString( requestID ) );
         }
 
         for ( DsmlDecorator<? extends Response> response : responses )
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/BindResponseDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/BindResponseDsml.java
index 4bac4b77d..3cbd4b5f6 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/BindResponseDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/BindResponseDsml.java
@@ -20,6 +20,7 @@
 package org.apache.directory.api.dsmlv2.response;
 
 
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.BindResponse;
 import org.apache.directory.api.ldap.model.message.BindResponseImpl;
@@ -34,8 +35,6 @@ import org.dom4j.tree.DefaultElement;
  */
 public class BindResponseDsml extends AbstractResultResponseDsml<BindResponse> implements BindResponse
 {
-    private static final String AUTH_RESPONSE_TAG = "authResponse";
-
     /**
      * Creates a new getDecoratedMessage() of AuthResponseDsml.
      * 
@@ -69,11 +68,11 @@ public class BindResponseDsml extends AbstractResultResponseDsml<BindResponse> i
 
         if ( root != null )
         {
-            element = root.addElement( AUTH_RESPONSE_TAG );
+            element = root.addElement( DsmlLiterals.AUTH_RESPONSE );
         }
         else
         {
-            element = new DefaultElement( AUTH_RESPONSE_TAG );
+            element = new DefaultElement( DsmlLiterals.AUTH_RESPONSE );
         }
 
 
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/CompareResponseDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/CompareResponseDsml.java
index 667a54793..858e065cb 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/CompareResponseDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/CompareResponseDsml.java
@@ -21,6 +21,7 @@
 package org.apache.directory.api.dsmlv2.response;
 
 
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.CompareResponse;
 import org.apache.directory.api.ldap.model.message.CompareResponseImpl;
@@ -36,9 +37,6 @@ import org.dom4j.tree.DefaultElement;
  */
 public class CompareResponseDsml extends AbstractResultResponseDsml<CompareResponse> implements CompareResponse
 {
-    private static final String COMPARE_RESPONSE_TAG = "compareResponse";
-
-
     /**
      * Creates a new getDecoratedMessage() of CompareResponseDsml.
      * 
@@ -82,11 +80,11 @@ public class CompareResponseDsml extends AbstractResultResponseDsml<CompareRespo
 
         if ( root != null )
         {
-            element = root.addElement( COMPARE_RESPONSE_TAG );
+            element = root.addElement( DsmlLiterals.COMPARE_RESPONSE );
         }
         else
         {
-            element = new DefaultElement( COMPARE_RESPONSE_TAG );
+            element = new DefaultElement( DsmlLiterals.COMPARE_RESPONSE );
         }
 
         LdapResultDsml ldapResultDsml = new LdapResultDsml( getCodecService(),
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/DelResponseDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/DelResponseDsml.java
index d05de5b28..d0d188550 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/DelResponseDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/DelResponseDsml.java
@@ -21,6 +21,7 @@
 package org.apache.directory.api.dsmlv2.response;
 
 
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.DeleteResponse;
 import org.apache.directory.api.ldap.model.message.DeleteResponseImpl;
@@ -37,9 +38,6 @@ import org.dom4j.tree.DefaultElement;
 public class DelResponseDsml extends AbstractResultResponseDsml<DeleteResponse>
     implements DeleteResponse
 {
-    private static final String DEL_RESPONSE_TAG = "delResponse";
-
-
     /**
      * Creates a new getDecoratedMessage() of DelResponseDsml.
      * 
@@ -83,11 +81,11 @@ public class DelResponseDsml extends AbstractResultResponseDsml<DeleteResponse>
 
         if ( root != null )
         {
-            element = root.addElement( DEL_RESPONSE_TAG );
+            element = root.addElement( DsmlLiterals.DEL_RESPONSE );
         }
         else
         {
-            element = new DefaultElement( DEL_RESPONSE_TAG );
+            element = new DefaultElement( DsmlLiterals.DEL_RESPONSE );
         }
 
         LdapResultDsml ldapResultDsml = new LdapResultDsml( getCodecService(),
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/Dsmlv2ResponseGrammar.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/Dsmlv2ResponseGrammar.java
index 8c938e28f..ce4de5cc7 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/Dsmlv2ResponseGrammar.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/Dsmlv2ResponseGrammar.java
@@ -33,6 +33,7 @@ import org.apache.directory.api.dsmlv2.AbstractDsmlMessageDecorator;
 import org.apache.directory.api.dsmlv2.AbstractGrammar;
 import org.apache.directory.api.dsmlv2.DsmlControl;
 import org.apache.directory.api.dsmlv2.DsmlDecorator;
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.dsmlv2.Dsmlv2Container;
 import org.apache.directory.api.dsmlv2.Dsmlv2StatesEnum;
 import org.apache.directory.api.dsmlv2.Grammar;
@@ -150,7 +151,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             String attributeValue;
             
             // requestID
-            attributeValue = xpp.getAttributeValue( "", "requestID" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING,  DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -187,7 +188,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             String attributeValue;
             
             // requestID
-            attributeValue = xpp.getAttributeValue( "", "requestID" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING,  DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -200,7 +201,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             }
 
             // MatchedDN
-            attributeValue = xpp.getAttributeValue( "", "matchedDN" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.MATCHED_DN );
 
             if ( attributeValue != null )
             {
@@ -239,7 +240,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             String attributeValue;
             
             // requestID
-            attributeValue = xpp.getAttributeValue( "", "requestID" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING,  DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -253,7 +254,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             }
 
             // MatchedDN
-            attributeValue = xpp.getAttributeValue( "", "matchedDN" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.MATCHED_DN );
 
             if ( attributeValue != null )
             {
@@ -292,7 +293,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             String attributeValue;
             
             // requestID
-            attributeValue = xpp.getAttributeValue( "", "requestID" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING,  DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -305,7 +306,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             }
 
             // MatchedDN
-            attributeValue = xpp.getAttributeValue( "", "matchedDN" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.MATCHED_DN );
 
             if ( attributeValue != null )
             {
@@ -344,7 +345,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             String attributeValue;
             
             // requestID
-            attributeValue = xpp.getAttributeValue( "", "requestID" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING,  DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -357,7 +358,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             }
 
             // MatchedDN
-            attributeValue = xpp.getAttributeValue( "", "matchedDN" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.MATCHED_DN );
 
             if ( attributeValue != null )
             {
@@ -396,7 +397,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             String attributeValue;
             
             // requestID
-            attributeValue = xpp.getAttributeValue( "", "requestID" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING,  DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -409,7 +410,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             }
 
             // MatchedDN
-            attributeValue = xpp.getAttributeValue( "", "matchedDN" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.MATCHED_DN );
 
             if ( attributeValue != null )
             {
@@ -448,7 +449,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             String attributeValue;
             
             // requestID
-            attributeValue = xpp.getAttributeValue( "", "requestID" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING,  DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -461,7 +462,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             }
 
             // MatchedDN
-            attributeValue = xpp.getAttributeValue( "", "matchedDN" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.MATCHED_DN );
 
             if ( attributeValue != null )
             {
@@ -496,7 +497,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             XmlPullParser xpp = container.getParser();
 
             // requestID
-            attributeValue = xpp.getAttributeValue( "", "requestID" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING,  DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -515,7 +516,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             LdapResult ldapResult = extendedResponse.getLdapResult();
 
             // MatchedDN
-            attributeValue = xpp.getAttributeValue( "", "matchedDN" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.MATCHED_DN );
 
             if ( attributeValue != null )
             {
@@ -549,7 +550,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             String attributeValue;
 
             // requestID
-            attributeValue = xpp.getAttributeValue( "", "requestID" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING,  DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -567,7 +568,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             }
 
             // type
-            attributeValue = xpp.getAttributeValue( "", "type" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.TYPE );
 
             if ( attributeValue != null )
             {
@@ -820,7 +821,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             // Checking and adding the request's attributes
             String attributeValue;
             // code
-            attributeValue = xpp.getAttributeValue( "", "code" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.CODE );
 
             if ( attributeValue != null )
             {
@@ -839,7 +840,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             }
 
             // descr
-            attributeValue = xpp.getAttributeValue( "", "descr" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DESCR );
 
             if ( ( attributeValue != null ) && !DSMLV2_DESCR_TAGS.contains( attributeValue ) )
             {
@@ -970,7 +971,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             SearchResponse searchResponse;
 
             // Checking and adding the batchRequest's attributes
-            String attributeValue = xpp.getAttributeValue( "", "requestID" );
+            String attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING,  DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -1012,7 +1013,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             String attributeValue;
             
             // requestID
-            attributeValue = xpp.getAttributeValue( "", "requestID" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING,  DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -1025,7 +1026,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             }
 
             // dn
-            attributeValue = xpp.getAttributeValue( "", "dn" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DN );
 
             if ( attributeValue != null )
             {
@@ -1073,7 +1074,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             String attributeValue;
             
             // requestID
-            attributeValue = xpp.getAttributeValue( "", "requestID" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING,  DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -1114,7 +1115,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             String attributeValue;
             
             // requestID
-            attributeValue = xpp.getAttributeValue( "", "requestID" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING,  DsmlLiterals.REQUEST_ID );
 
             if ( attributeValue != null )
             {
@@ -1128,7 +1129,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
 
 
             // MatchedDN
-            attributeValue = xpp.getAttributeValue( "", "matchedDN" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.MATCHED_DN );
 
             if ( attributeValue != null )
             {
@@ -1165,7 +1166,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
             // Checking and adding the request's attributes
             String attributeValue;
             // name
-            attributeValue = xpp.getAttributeValue( "", "name" );
+            attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME );
 
             if ( attributeValue != null )
             {
@@ -1382,7 +1383,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
 
         // ** OPEN BATCH Reponse **
         // State: [INIT_GRAMMAR_STATE] - Tag: <batchResponse>
-        super.transitions[Dsmlv2StatesEnum.INIT_GRAMMAR_STATE.ordinal()].put( new Tag( "batchResponse", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.INIT_GRAMMAR_STATE.ordinal()].put( new Tag( DsmlLiterals.BATCH_RESPONSE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.INIT_GRAMMAR_STATE, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP,
                 batchResponseCreation ) );
 
@@ -1392,53 +1393,53 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
         super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()] = new HashMap<Tag, GrammarTransition>();
 
         // State: [BATCH_RESPONSE_LOOP] - Tag: <addResponse>
-        super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put( new Tag( "addResponse", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put( new Tag( DsmlLiterals.ADD_RESPONSE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, Dsmlv2StatesEnum.LDAP_RESULT,
                 addResponseCreation ) );
 
         // State: [BATCH_RESPONSE_LOOP] - Tag: <authResponse>
-        super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put( new Tag( "authResponse", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put( new Tag( DsmlLiterals.AUTH_RESPONSE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, Dsmlv2StatesEnum.LDAP_RESULT,
                 authResponseCreation ) );
 
         // State: [BATCH_RESPONSE_LOOP] - Tag: <compareResponse>
-        super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put( new Tag( "compareResponse", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put( new Tag( DsmlLiterals.COMPARE_RESPONSE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, Dsmlv2StatesEnum.LDAP_RESULT,
                 compareResponseCreation ) );
 
         // State: [BATCH_RESPONSE_LOOP] - Tag: <delResponse>
-        super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put( new Tag( "delResponse", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put( new Tag( DsmlLiterals.DEL_RESPONSE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, Dsmlv2StatesEnum.LDAP_RESULT,
                 delResponseCreation ) );
 
         // State: [BATCH_RESPONSE_LOOP] - Tag: <modifyResponse>
-        super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put( new Tag( "modifyResponse", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put( new Tag( DsmlLiterals.MODIFY_RESPONSE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, Dsmlv2StatesEnum.LDAP_RESULT,
                 modifyResponseCreation ) );
 
         // State: [BATCH_RESPONSE_LOOP] - Tag: <modDNResponse>
-        super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put( new Tag( "modDNResponse", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put( new Tag( DsmlLiterals.MOD_DN_RESPONSE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, Dsmlv2StatesEnum.LDAP_RESULT,
                 modDNResponseCreation ) );
 
         // State: [BATCH_RESPONSE_LOOP] - Tag: <extendedResponse>
         super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put(
-            new Tag( "extendedResponse", Tag.START ),
+            new Tag( DsmlLiterals.EXTENDED_RESPONSE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, Dsmlv2StatesEnum.EXTENDED_RESPONSE,
                 extendedResponseCreation ) );
 
         // State: [BATCH_RESPONSE_LOOP] - Tag: <errorResponse>
-        super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put( new Tag( "errorResponse", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put( new Tag( DsmlLiterals.ERROR_RESPONSE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, Dsmlv2StatesEnum.ERROR_RESPONSE,
                 errorResponseCreation ) );
 
         // State: [BATCH_RESPONSE_LOOP] - Tag: <searchReponse>
-        super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put( new Tag( "searchResponse", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put( new Tag( DsmlLiterals.SEARCH_RESPONSE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, Dsmlv2StatesEnum.SEARCH_RESPONSE,
                 searchResponseCreation ) );
 
         // State: [BATCH_RESPONSE_LOOP] - Tag: </batchResponse>
-        super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put( new Tag( "batchResponse", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP.ordinal()].put( new Tag( DsmlLiterals.BATCH_RESPONSE, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, Dsmlv2StatesEnum.GRAMMAR_END, null ) );
 
         //====================================================
@@ -1450,36 +1451,36 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
         super.transitions[Dsmlv2StatesEnum.DETAIL_END.ordinal()] = new HashMap<Tag, GrammarTransition>();
 
         // State: [ERROR_RESPONSE] - Tag: <message>
-        super.transitions[Dsmlv2StatesEnum.ERROR_RESPONSE.ordinal()].put( new Tag( "message", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.ERROR_RESPONSE.ordinal()].put( new Tag( DsmlLiterals.MESSAGE, Tag.START ),
             new GrammarTransition(
                 Dsmlv2StatesEnum.ERROR_RESPONSE, Dsmlv2StatesEnum.MESSAGE_END, errorResponseAddMessage ) );
 
         // State: [ERROR_RESPONSE] - Tag: <detail>
-        super.transitions[Dsmlv2StatesEnum.ERROR_RESPONSE.ordinal()].put( new Tag( "detail", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.ERROR_RESPONSE.ordinal()].put( new Tag( DsmlLiterals.DETAIL, Tag.START ),
             new GrammarTransition(
                 Dsmlv2StatesEnum.ERROR_RESPONSE, Dsmlv2StatesEnum.DETAIL_START, ERROR_RESPONSE_ADD_DETAIL ) );
 
         // State: [MESSAGE_END] - Tag: </errorResponse>
-        super.transitions[Dsmlv2StatesEnum.MESSAGE_END.ordinal()].put( new Tag( "errorResponse", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.MESSAGE_END.ordinal()].put( new Tag( DsmlLiterals.ERROR_RESPONSE, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.MESSAGE_END, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, null ) );
 
         // State: [MESSAGE_END] - Tag: <detail>
-        super.transitions[Dsmlv2StatesEnum.MESSAGE_END.ordinal()].put( new Tag( "detail", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.MESSAGE_END.ordinal()].put( new Tag( DsmlLiterals.DETAIL, Tag.START ),
             new GrammarTransition(
                 Dsmlv2StatesEnum.MESSAGE_END, Dsmlv2StatesEnum.DETAIL_START, ERROR_RESPONSE_ADD_DETAIL ) );
 
         // State: [DETAIL_START] - Tag: </detail>
-        super.transitions[Dsmlv2StatesEnum.DETAIL_START.ordinal()].put( new Tag( "detail", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.DETAIL_START.ordinal()].put( new Tag( DsmlLiterals.DETAIL, Tag.END ),
             new GrammarTransition(
                 Dsmlv2StatesEnum.DETAIL_START, Dsmlv2StatesEnum.DETAIL_END, null ) );
 
         // State: [DETAIL_END] - Tag: <detail>
-        super.transitions[Dsmlv2StatesEnum.DETAIL_END.ordinal()].put( new Tag( "detail", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.DETAIL_END.ordinal()].put( new Tag( DsmlLiterals.DETAIL, Tag.END ),
             new GrammarTransition(
                 Dsmlv2StatesEnum.DETAIL_END, Dsmlv2StatesEnum.DETAIL_END, ERROR_RESPONSE_ADD_DETAIL ) );
 
         // State: [ERROR_RESPONSE] - Tag: </errorResponse>
-        super.transitions[Dsmlv2StatesEnum.ERROR_RESPONSE.ordinal()].put( new Tag( "errorResponse", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.ERROR_RESPONSE.ordinal()].put( new Tag( DsmlLiterals.ERROR_RESPONSE, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.ERROR_RESPONSE, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, null ) );
 
         //====================================================
@@ -1497,139 +1498,139 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
         super.transitions[Dsmlv2StatesEnum.RESPONSE_END.ordinal()] = new HashMap<Tag, GrammarTransition>();
 
         // State: [EXTENDED_RESPONSE] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE.ordinal()].put( new Tag( "control", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_RESPONSE,
                 Dsmlv2StatesEnum.EXTENDED_RESPONSE_CONTROL_START, ldapResultControlCreation ) );
 
         // State: [EXTENDED_RESPONSE_CONTROL_START] - Tag: <controlValue>
-        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_CONTROL_START.ordinal()].put( new Tag( "controlValue",
+        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_CONTROL_START.ordinal()].put( new Tag( DsmlLiterals.CONTROL_VALUE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_RESPONSE_CONTROL_START,
                 Dsmlv2StatesEnum.EXTENDED_RESPONSE_CONTROL_VALUE_END, ldapResultControlValueCreation ) );
 
         // State: [EXTENDED_RESPONSE_CONTROL_VALUE_END] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_CONTROL_VALUE_END.ordinal()].put( new Tag( "control",
+        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_CONTROL_VALUE_END.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_RESPONSE_CONTROL_VALUE_END,
                 Dsmlv2StatesEnum.EXTENDED_RESPONSE_CONTROL_END, null ) );
 
         // State: [EXTENDED_RESPONSE_CONTROL_START] - Tag: </control>
         super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_CONTROL_START.ordinal()].put(
-            new Tag( "control", Tag.END ),
+            new Tag( DsmlLiterals.CONTROL, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_RESPONSE_CONTROL_START,
                 Dsmlv2StatesEnum.EXTENDED_RESPONSE_CONTROL_END, null ) );
 
         // State: [EXTENDED_RESPONSE_CONTROL_END] - Tag: <control>
         super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_CONTROL_END.ordinal()].put(
-            new Tag( "control", Tag.START ),
+            new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_RESPONSE_CONTROL_END,
                 Dsmlv2StatesEnum.EXTENDED_RESPONSE_CONTROL_START, ldapResultControlCreation ) );
 
         // State: [EXTENDED_RESPONSE_CONTROL_END] - Tag: <resultCode>
-        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_CONTROL_END.ordinal()].put( new Tag( "resultCode",
+        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_CONTROL_END.ordinal()].put( new Tag( DsmlLiterals.RESULT_CODE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_RESPONSE_CONTROL_END,
                 Dsmlv2StatesEnum.EXTENDED_RESPONSE_RESULT_CODE_START, extendedResponseAddResultCode ) );
 
         // State: [EXTENDED_RESPONSE] - Tag: <resultCode>
-        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE.ordinal()].put( new Tag( "resultCode", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE.ordinal()].put( new Tag( DsmlLiterals.RESULT_CODE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_RESPONSE,
                 Dsmlv2StatesEnum.EXTENDED_RESPONSE_RESULT_CODE_START, extendedResponseAddResultCode ) );
 
         // State: [EXTENDED_RESPONSE_RESULT_CODE_START] - Tag: </resultCode>
-        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_RESULT_CODE_START.ordinal()].put( new Tag( "resultCode",
+        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_RESULT_CODE_START.ordinal()].put( new Tag( DsmlLiterals.RESULT_CODE,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_RESPONSE_RESULT_CODE_START,
                 Dsmlv2StatesEnum.EXTENDED_RESPONSE_RESULT_CODE_END, null ) );
 
         // State: [EXTENDED_RESPONSE_RESULT_CODE_END] - Tag: <errorMessage>
         super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_RESULT_CODE_END.ordinal()].put(
-            new Tag( "errorMessage", Tag.START ), new GrammarTransition(
+            new Tag( DsmlLiterals.ERROR_MESSAGE, Tag.START ), new GrammarTransition(
                 Dsmlv2StatesEnum.EXTENDED_RESPONSE_RESULT_CODE_END,
                 Dsmlv2StatesEnum.EXTENDED_RESPONSE_ERROR_MESSAGE_END, extendedResponseAddErrorMessage ) );
 
         // State: [EXTENDED_RESPONSE_RESULT_CODE_END] - Tag: <referral>
-        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_RESULT_CODE_END.ordinal()].put( new Tag( "referral",
+        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_RESULT_CODE_END.ordinal()].put( new Tag( DsmlLiterals.REFERRAL,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_RESPONSE_RESULT_CODE_END,
                 Dsmlv2StatesEnum.EXTENDED_RESPONSE_REFERRAL_END, extendedResponseAddReferral ) );
 
         // State: [EXTENDED_RESPONSE_RESULT_CODE_END] - Tag: <responseName>
         super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_RESULT_CODE_END.ordinal()].put(
-            new Tag( "responseName", Tag.START ), new GrammarTransition(
+            new Tag( DsmlLiterals.RESPONSE_NAME, Tag.START ), new GrammarTransition(
                 Dsmlv2StatesEnum.EXTENDED_RESPONSE_RESULT_CODE_END, Dsmlv2StatesEnum.RESPONSE_NAME_END,
                 extendedResponseAddResponseName ) );
 
         // State: [EXTENDED_RESPONSE_RESULT_CODE_END] - Tag: <response>
-        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_RESULT_CODE_END.ordinal()].put( new Tag( "response",
+        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_RESULT_CODE_END.ordinal()].put( new Tag( DsmlLiterals.RESPONSE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_RESPONSE_RESULT_CODE_END, Dsmlv2StatesEnum.RESPONSE_END,
                 extendedResponseAddResponse ) );
 
         // State: [EXTENDED_RESPONSE_RESULT_CODE_END] - Tag: </extendedResponse>
         super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_RESULT_CODE_END.ordinal()].put(
-            new Tag( "extendedResponse", Tag.END ), new GrammarTransition(
+            new Tag( DsmlLiterals.EXTENDED_RESPONSE, Tag.END ), new GrammarTransition(
                 Dsmlv2StatesEnum.EXTENDED_RESPONSE_RESULT_CODE_END, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, null ) );
 
         // State: [EXTENDED_RESPONSE_ERROR_MESSAGE_END] - Tag: <referral>
-        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_ERROR_MESSAGE_END.ordinal()].put( new Tag( "referral",
+        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_ERROR_MESSAGE_END.ordinal()].put( new Tag( DsmlLiterals.REFERRAL,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_RESPONSE_ERROR_MESSAGE_END,
                 Dsmlv2StatesEnum.EXTENDED_RESPONSE_REFERRAL_END, extendedResponseAddReferral ) );
 
         // State: [EXTENDED_RESPONSE_ERROR_MESSAGE_END] - Tag: <responseName>
         super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_ERROR_MESSAGE_END.ordinal()].put(
-            new Tag( "responseName", Tag.START ), new GrammarTransition(
+            new Tag( DsmlLiterals.RESPONSE_NAME, Tag.START ), new GrammarTransition(
                 Dsmlv2StatesEnum.EXTENDED_RESPONSE_ERROR_MESSAGE_END, Dsmlv2StatesEnum.RESPONSE_NAME_END,
                 extendedResponseAddResponseName ) );
 
         // State: [EXTENDED_RESPONSE_ERROR_MESSAGE_END] - Tag: <response>
-        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_ERROR_MESSAGE_END.ordinal()].put( new Tag( "response",
+        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_ERROR_MESSAGE_END.ordinal()].put( new Tag( DsmlLiterals.RESPONSE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_RESPONSE_ERROR_MESSAGE_END, Dsmlv2StatesEnum.RESPONSE_END,
                 extendedResponseAddResponse ) );
 
         // State: [EXTENDED_RESPONSE_ERROR_MESSAGE_END] - Tag: </extendedResponse>
         super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_ERROR_MESSAGE_END.ordinal()].put( new Tag(
-            "extendedResponse",
+            DsmlLiterals.EXTENDED_RESPONSE,
             Tag.END ), new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_RESPONSE_ERROR_MESSAGE_END,
             Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, null ) );
 
         // State: [EXTENDED_RESPONSE_REFERRAL_END] - Tag: <referral>
-        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_REFERRAL_END.ordinal()].put( new Tag( "referral",
+        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_REFERRAL_END.ordinal()].put( new Tag( DsmlLiterals.REFERRAL,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_RESPONSE_REFERRAL_END,
                 Dsmlv2StatesEnum.EXTENDED_RESPONSE_REFERRAL_END, extendedResponseAddReferral ) );
 
         // State: [EXTENDED_RESPONSE_REFERRAL_END] - Tag: <responseName>
-        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_REFERRAL_END.ordinal()].put( new Tag( "responseName",
+        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_REFERRAL_END.ordinal()].put( new Tag( DsmlLiterals.RESPONSE_NAME,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_RESPONSE_REFERRAL_END, Dsmlv2StatesEnum.RESPONSE_NAME_END,
                 extendedResponseAddResponseName ) );
 
-        // State: [EXTENDED_RESPONSE_REFERRAL_END] - Tag: <reponse>
+        // State: [EXTENDED_RESPONSE_REFERRAL_END] - Tag: <response>
         super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_REFERRAL_END.ordinal()].put(
-            new Tag( "reponse", Tag.START ),
+            new Tag( DsmlLiterals.RESPONSE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_RESPONSE_REFERRAL_END, Dsmlv2StatesEnum.RESPONSE_END,
                 extendedResponseAddResponse ) );
 
         // State: [EXTENDED_RESPONSE_REFERRAL_END] - Tag: </extendedResponse>
-        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_REFERRAL_END.ordinal()].put( new Tag( "extendedResponse",
+        super.transitions[Dsmlv2StatesEnum.EXTENDED_RESPONSE_REFERRAL_END.ordinal()].put( new Tag( DsmlLiterals.EXTENDED_RESPONSE,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_RESPONSE_REFERRAL_END,
                 Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, null ) );
 
         // State: [RESPONSE_NAME_END] - Tag: <response>
-        super.transitions[Dsmlv2StatesEnum.RESPONSE_NAME_END.ordinal()].put( new Tag( "response", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.RESPONSE_NAME_END.ordinal()].put( new Tag( DsmlLiterals.RESPONSE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.RESPONSE_NAME_END, Dsmlv2StatesEnum.RESPONSE_END,
                 extendedResponseAddResponse ) );
 
         // State: [RESPONSE_NAME_END] - Tag: </extendedResponse>
-        super.transitions[Dsmlv2StatesEnum.RESPONSE_NAME_END.ordinal()].put( new Tag( "extendedResponse", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.RESPONSE_NAME_END.ordinal()].put( new Tag( DsmlLiterals.EXTENDED_RESPONSE, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.RESPONSE_NAME_END, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, null ) );
 
         // State: [RESPONSE_END] - Tag: </extendedResponse>
-        super.transitions[Dsmlv2StatesEnum.RESPONSE_END.ordinal()].put( new Tag( "extendedResponse", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.RESPONSE_END.ordinal()].put( new Tag( DsmlLiterals.EXTENDED_RESPONSE, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.RESPONSE_END, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, null ) );
 
         //====================================================
@@ -1646,194 +1647,194 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
         super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_DONE_END.ordinal()] = new HashMap<Tag, GrammarTransition>();
 
         // State: [LDAP_RESULT] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT.ordinal()].put( new Tag( "control", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition(
                 Dsmlv2StatesEnum.LDAP_RESULT, Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_START, ldapResultControlCreation ) );
 
         // State: [LDAP_RESULT] - Tag: <resultCode>
         super.transitions[Dsmlv2StatesEnum.LDAP_RESULT.ordinal()]
-            .put( new Tag( "resultCode", Tag.START ), new GrammarTransition(
+            .put( new Tag( DsmlLiterals.RESULT_CODE, Tag.START ), new GrammarTransition(
                 Dsmlv2StatesEnum.LDAP_RESULT, Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_START, ldapResultAddResultCode ) );
 
         // State: [LDAP_RESULT_CONTROL_START] - Tag: <controlValue>
         super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_START.ordinal()].put(
-            new Tag( "controlValue", Tag.START ),
+            new Tag( DsmlLiterals.CONTROL_VALUE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_START,
                 Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_VALUE_END, ldapResultControlValueCreation ) );
 
         // State: [LDAP_RESULT_CONTROL_VALUE_END] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_VALUE_END.ordinal()].put( new Tag( "control", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_VALUE_END.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_VALUE_END,
                 Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_END, null ) );
 
         // State: [LDAP_RESULT_CONTROL_START] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_START.ordinal()].put( new Tag( "control", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_START.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_START,
                 Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_END, null ) );
 
         // State: [LDAP_RESULT_CONTROL_END] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_END.ordinal()].put( new Tag( "control", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_END.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_END,
                 Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_START, ldapResultControlCreation ) );
 
         // State: [LDAP_RESULT_CONTROL_END] - Tag: <resultCode>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_END.ordinal()].put( new Tag( "resultCode", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_END.ordinal()].put( new Tag( DsmlLiterals.RESULT_CODE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_CONTROL_END,
                 Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_START, ldapResultAddResultCode ) );
 
         // State: [LDAP_RESULT_RESULT_CODE_START] - Tag: </resultCode>
         super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_START.ordinal()].put(
-            new Tag( "resultCode", Tag.END ),
+            new Tag( DsmlLiterals.RESULT_CODE, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_START,
                 Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END, null ) );
 
         // State: [LDAP_RESULT_RESULT_CODE_END] - Tag: <errorMessage>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END.ordinal()].put( new Tag( "errorMessage",
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END.ordinal()].put( new Tag( DsmlLiterals.ERROR_MESSAGE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END,
                 Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END, ldapResultAddErrorMessage ) );
 
         // State: [LDAP_RESULT_RESULT_CODE_END] - Tag: <referral>
         super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END.ordinal()].put(
-            new Tag( "referral", Tag.START ),
+            new Tag( DsmlLiterals.REFERRAL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END,
                 Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END, ldapResultAddReferral ) );
 
         // State: [LDAP_RESULT_RESULT_CODE_END] - Tag: </addResponse>
         super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END.ordinal()].put(
-            new Tag( "addResponse", Tag.END ),
+            new Tag( DsmlLiterals.ADD_RESPONSE, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP,
                 null ) );
 
         // State: [LDAP_RESULT_RESULT_CODE_END] - Tag: </authResponse>
         super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END.ordinal()].put(
-            new Tag( "authResponse", Tag.END ),
+            new Tag( DsmlLiterals.AUTH_RESPONSE, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP,
                 null ) );
 
         // State: [LDAP_RESULT_RESULT_CODE_END] - Tag: </compareResponse>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END.ordinal()].put( new Tag( "compareResponse",
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END.ordinal()].put( new Tag( DsmlLiterals.COMPARE_RESPONSE,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP,
                 null ) );
 
         // State: [LDAP_RESULT_RESULT_CODE_END] - Tag: </delResponse>
         super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END.ordinal()].put(
-            new Tag( "delResponse", Tag.END ),
+            new Tag( DsmlLiterals.DEL_RESPONSE, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP,
                 null ) );
 
         // State: [LDAP_RESULT_RESULT_CODE_END] - Tag: </modifyResponse>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END.ordinal()].put( new Tag( "modifyResponse",
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END.ordinal()].put( new Tag( DsmlLiterals.MODIFY_RESPONSE,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP,
                 null ) );
 
         // State: [LDAP_RESULT_RESULT_CODE_END] - Tag: </modDNResponse>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END.ordinal()].put( new Tag( "modDNResponse",
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END.ordinal()].put( new Tag( DsmlLiterals.MOD_DN_RESPONSE,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP,
                 null ) );
 
         // State: [LDAP_RESULT_RESULT_CODE_END] - Tag: </searchResultDone>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END.ordinal()].put( new Tag( "searchResultDone",
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END.ordinal()].put( new Tag( DsmlLiterals.SEARCH_RESULT_DONE,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_RESULT_CODE_END,
                 Dsmlv2StatesEnum.SEARCH_RESULT_DONE_END, null ) );
 
         // State: [SEARCH_RESULT_DONE_END] - Tag: </searchResponse>
         super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_DONE_END.ordinal()]
-            .put( new Tag( "searchResponse", Tag.END ), new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_DONE_END,
+            .put( new Tag( DsmlLiterals.SEARCH_RESPONSE, Tag.END ), new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_DONE_END,
                 Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, null ) );
 
         // State: [LDAP_RESULT_ERROR_MESSAGE_END] - Tag: <referral>
         super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END.ordinal()].put(
-            new Tag( "referral", Tag.START ),
+            new Tag( DsmlLiterals.REFERRAL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END,
                 Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END, ldapResultAddReferral ) );
 
         // State: [LDAP_RESULT_ERROR_MESSAGE_END] - Tag: </addResponse>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END.ordinal()].put( new Tag( "addResponse",
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END.ordinal()].put( new Tag( DsmlLiterals.ADD_RESPONSE,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END,
                 Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, null ) );
 
         // State: [LDAP_RESULT_ERROR_MESSAGE_END] - Tag: </authResponse>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END.ordinal()].put( new Tag( "authResponse",
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END.ordinal()].put( new Tag( DsmlLiterals.AUTH_RESPONSE,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END,
                 Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, null ) );
 
         // State: [LDAP_RESULT_ERROR_MESSAGE_END] - Tag: </compareResponse>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END.ordinal()].put( new Tag( "compareResponse",
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END.ordinal()].put( new Tag( DsmlLiterals.COMPARE_RESPONSE,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END,
                 Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, null ) );
 
         // State: [LDAP_RESULT_ERROR_MESSAGE_END] - Tag: </delResponse>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END.ordinal()].put( new Tag( "delResponse",
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END.ordinal()].put( new Tag( DsmlLiterals.DEL_RESPONSE,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END,
                 Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, null ) );
 
         // State: [LDAP_RESULT_ERROR_MESSAGE_END] - Tag: </modifyResponse>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END.ordinal()].put( new Tag( "modifyResponse",
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END.ordinal()].put( new Tag( DsmlLiterals.MODIFY_RESPONSE,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END,
                 Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, null ) );
 
         // State: [LDAP_RESULT_ERROR_MESSAGE_END] - Tag: </modDNResponse>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END.ordinal()].put( new Tag( "modDNResponse",
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END.ordinal()].put( new Tag( DsmlLiterals.MOD_DN_RESPONSE,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END,
                 Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP, null ) );
 
         // State: [LDAP_RESULT_ERROR_MESSAGE_END] - Tag: </searchResultDone>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END.ordinal()].put( new Tag( "searchResultDone",
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END.ordinal()].put( new Tag( DsmlLiterals.SEARCH_RESULT_DONE,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_ERROR_MESSAGE_END,
                 Dsmlv2StatesEnum.SEARCH_RESULT_DONE_END, null ) );
 
         // State: [LDAP_RESULT_REFERRAL_END] - Tag: <referral>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END.ordinal()].put( new Tag( "referral", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END.ordinal()].put( new Tag( DsmlLiterals.REFERRAL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END,
                 Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END, ldapResultAddReferral ) );
 
         // State: [LDAP_RESULT_REFERRAL_END] - Tag: </addResponse>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END.ordinal()].put( new Tag( "addResponse", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END.ordinal()].put( new Tag( DsmlLiterals.ADD_RESPONSE, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP,
                 null ) );
 
         // State: [LDAP_RESULT_REFERRAL_END] - Tag: </authResponse>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END.ordinal()].put( new Tag( "authResponse", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END.ordinal()].put( new Tag( DsmlLiterals.AUTH_RESPONSE, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP,
                 null ) );
 
         // State: [LDAP_RESULT_REFERRAL_END] - Tag: </compareResponse>
         super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END.ordinal()].put(
-            new Tag( "compareResponse", Tag.END ),
+            new Tag( DsmlLiterals.COMPARE_RESPONSE, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP,
                 null ) );
 
         // State: [LDAP_RESULT_REFERRAL_END] - Tag: </delResponse>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END.ordinal()].put( new Tag( "delResponse", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END.ordinal()].put( new Tag( DsmlLiterals.DEL_RESPONSE, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP,
                 null ) );
 
         // State: [LDAP_RESULT_REFERRAL_END] - Tag: </modifyResponse>
         super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END.ordinal()].put(
-            new Tag( "modifyResponse", Tag.END ),
+            new Tag( DsmlLiterals.MODIFY_RESPONSE, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP,
                 null ) );
 
         // State: [LDAP_RESULT_REFERRAL_END] - Tag: </modDNResponse>
         super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END.ordinal()].put(
-            new Tag( "modDNResponse", Tag.END ),
+            new Tag( DsmlLiterals.MOD_DN_RESPONSE, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP,
                 null ) );
 
         // State: [LDAP_RESULT_REFERRAL_END] - Tag: </searchResultDone>
-        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END.ordinal()].put( new Tag( "searchResultDone",
+        super.transitions[Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END.ordinal()].put( new Tag( DsmlLiterals.SEARCH_RESULT_DONE,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.LDAP_RESULT_REFERRAL_END, Dsmlv2StatesEnum.SEARCH_RESULT_DONE_END,
                 null ) );
@@ -1844,18 +1845,18 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
         super.transitions[Dsmlv2StatesEnum.SEARCH_RESPONSE.ordinal()] = new HashMap<Tag, GrammarTransition>();
 
         // State: [SEARCH_REPONSE] - Tag: <searchResultEntry>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESPONSE.ordinal()].put( new Tag( "searchResultEntry", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESPONSE.ordinal()].put( new Tag( DsmlLiterals.SEARCH_RESULT_ENTRY, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESPONSE, Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY,
                 searchResultEntryCreation ) );
 
         // State: [SEARCH_REPONSE] - Tag: <searchResultReference>
         super.transitions[Dsmlv2StatesEnum.SEARCH_RESPONSE.ordinal()].put(
-            new Tag( "searchResultReference", Tag.START ),
+            new Tag( DsmlLiterals.SEARCH_RESULT_REFERENCE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESPONSE, Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE,
                 searchResultReferenceCreation ) );
 
         // State: [SEARCH_REPONSE] - Tag: <searchResultDone>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESPONSE.ordinal()].put( new Tag( "searchResultDone", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESPONSE.ordinal()].put( new Tag( DsmlLiterals.SEARCH_RESULT_DONE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESPONSE, Dsmlv2StatesEnum.LDAP_RESULT,
                 searchResultDoneCreation ) );
 
@@ -1871,84 +1872,84 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
         super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_VALUE_END.ordinal()] = new HashMap<Tag, GrammarTransition>();
 
         // State: [SEARCH_RESULT_ENTRY] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY.ordinal()].put( new Tag( "control", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY,
                 Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_START, searchResultEntryControlCreation ) );
 
         // State: [SEARCH_RESULT_ENTRY] - Tag: <attr>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY.ordinal()].put( new Tag( "attr", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY.ordinal()].put( new Tag( DsmlLiterals.ATTR, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY,
                 Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_ATTR_START, searchResultEntryAddAttr ) );
 
         // State: [SEARCH_RESULT_ENTRY] - Tag: </searchResultEntry>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY.ordinal()].put( new Tag( "searchResultEntry", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY.ordinal()].put( new Tag( DsmlLiterals.SEARCH_RESULT_ENTRY, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY, Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_LOOP,
                 null ) );
 
         // State: [SEARCH_RESULT_ENTRY_CONTROL_START] - Tag: <controlValue>
         super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_START.ordinal()].put(
-            new Tag( "controlValue", Tag.START ), new GrammarTransition(
+            new Tag( DsmlLiterals.CONTROL_VALUE, Tag.START ), new GrammarTransition(
                 Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_START,
                 Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_VALUE_END, searchResultEntryControlValueCreation ) );
 
         // State: [SEARCH_RESULT_ENTRY_CONTROL_VALUE_END] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_VALUE_END.ordinal()].put( new Tag( "control",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_VALUE_END.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_VALUE_END,
                 Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_END, null ) );
 
         // State: [SEARCH_RESULT_ENTRY_CONTROL_START] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_START.ordinal()].put( new Tag( "control",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_START.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_START,
                 Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_END, null ) );
 
         // State: [SEARCH_RESULT_ENTRY_CONTROL_END] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_END.ordinal()].put( new Tag( "control",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_END.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_END,
                 Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_START, searchResultEntryControlCreation ) );
 
         // State: [SEARCH_RESULT_ENTRY_CONTROL_END] - Tag: </searchResultEntry>
         super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_END.ordinal()].put(
-            new Tag( "searchResultEntry", Tag.END ), new GrammarTransition(
+            new Tag( DsmlLiterals.SEARCH_RESULT_ENTRY, Tag.END ), new GrammarTransition(
                 Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_END, Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_LOOP, null ) );
 
         // State: [SEARCH_RESULT_ENTRY_CONTROL_END] - Tag: <attr>
         super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_END.ordinal()].put(
-            new Tag( "attr", Tag.START ),
+            new Tag( DsmlLiterals.ATTR, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_CONTROL_END,
                 Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_ATTR_START, null ) );
 
         // State: [SEARCH_RESULT_ENTRY_ATTR_START] - Tag: </attr>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_ATTR_START.ordinal()].put( new Tag( "attr", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_ATTR_START.ordinal()].put( new Tag( DsmlLiterals.ATTR, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_ATTR_START,
                 Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_ATTR_END, null ) );
 
         // State: [SEARCH_RESULT_ENTRY_ATTR_START] - Tag: <value>
         super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_ATTR_START.ordinal()].put(
-            new Tag( "value", Tag.START ),
+            new Tag( DsmlLiterals.VALUE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_ATTR_START,
                 Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_VALUE_END, searchResultEntryAddValue ) );
 
         // State: [SEARCH_RESULT_ENTRY_ATTR_END] - Tag: <attr>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_ATTR_END.ordinal()].put( new Tag( "attr", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_ATTR_END.ordinal()].put( new Tag( DsmlLiterals.ATTR, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_ATTR_END,
                 Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_ATTR_START, searchResultEntryAddAttr ) );
 
         // State: [SEARCH_RESULT_ENTRY_ATTR_END] - Tag: </searchResultEntry>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_ATTR_END.ordinal()].put( new Tag( "searchResultEntry",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_ATTR_END.ordinal()].put( new Tag( DsmlLiterals.SEARCH_RESULT_ENTRY,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_ATTR_END,
                 Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_LOOP, null ) );
 
         // State: [SEARCH_RESULT_ENTRY_VALUE_END] - Tag: <value>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_VALUE_END.ordinal()].put( new Tag( "value", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_VALUE_END.ordinal()].put( new Tag( DsmlLiterals.VALUE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_VALUE_END,
                 Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_VALUE_END, searchResultEntryAddValue ) );
 
         // State: [SEARCH_RESULT_ENTRY_VALUE_END] - Tag: </attr>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_VALUE_END.ordinal()].put( new Tag( "attr", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_VALUE_END.ordinal()].put( new Tag( DsmlLiterals.ATTR, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_VALUE_END,
                 Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_ATTR_END, null ) );
 
@@ -1958,19 +1959,19 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
         super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_LOOP.ordinal()] = new HashMap<Tag, GrammarTransition>();
 
         // State: [SEARCH_RESULT_ENTRY_LOOP] - Tag: <searchResultEntry>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_LOOP.ordinal()].put( new Tag( "searchResultEntry",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_LOOP.ordinal()].put( new Tag( DsmlLiterals.SEARCH_RESULT_ENTRY,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_LOOP, Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY,
                 searchResultEntryCreation ) );
 
         // State: [SEARCH_RESULT_ENTRY_LOOP] - Tag: <searchResultReference>
         super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_LOOP.ordinal()].put(
-            new Tag( "searchResultReference", Tag.START ), new GrammarTransition(
+            new Tag( DsmlLiterals.SEARCH_RESULT_REFERENCE, Tag.START ), new GrammarTransition(
                 Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_LOOP, Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE,
                 searchResultReferenceCreation ) );
 
         // State: [SEARCH_RESULT_ENTRY_LOOP] - Tag: <searchResultDone>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_LOOP.ordinal()].put( new Tag( "searchResultDone",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_LOOP.ordinal()].put( new Tag( DsmlLiterals.SEARCH_RESULT_DONE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_ENTRY_LOOP, Dsmlv2StatesEnum.LDAP_RESULT,
                 searchResultDoneCreation ) );
@@ -1985,53 +1986,53 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
         super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_REF_END.ordinal()] = new HashMap<Tag, GrammarTransition>();
 
         // State: [SEARCH_RESULT_REFERENCE] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE.ordinal()].put( new Tag( "control", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE,
                 Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_CONTROL_START, searchResultReferenceControlCreation ) );
 
         // State: [SEARCH_RESULT_REFERENCE] - Tag: <ref>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE.ordinal()].put( new Tag( "ref", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE.ordinal()].put( new Tag( DsmlLiterals.REF, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE,
                 Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_REF_END, searchResultReferenceAddRef ) );
 
         // State: [SEARCH_RESULT_REFERENCE_CONTROL_START] - Tag: <controlValue>
         super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_CONTROL_START.ordinal()].put( new Tag(
-            "controlValue",
+            DsmlLiterals.CONTROL_VALUE,
             Tag.START ), new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_CONTROL_START,
             Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_CONTROL_VALUE_END, searchResultReferenceControlValueCreation ) );
 
         // State: [sEARCH_RESULT_REFERENCE_CONTROL_VALUE_END] - Tag: </control>
         super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_CONTROL_VALUE_END.ordinal()].put(
-            new Tag( "control", Tag.END ), new GrammarTransition(
+            new Tag( DsmlLiterals.CONTROL, Tag.END ), new GrammarTransition(
                 Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_CONTROL_VALUE_END,
                 Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_CONTROL_END, null ) );
 
         // State: [SEARCH_RESULT_REFERENCE_CONTROL_START] - Tag: </control>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_CONTROL_START.ordinal()].put( new Tag( "control",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_CONTROL_START.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_CONTROL_START,
                 Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_CONTROL_END, null ) );
 
         // State: [SEARCH_RESULT_REFERENCE_CONTROL_END] - Tag: <control>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_CONTROL_END.ordinal()].put( new Tag( "control",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_CONTROL_END.ordinal()].put( new Tag( DsmlLiterals.CONTROL,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_CONTROL_END,
                 Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_CONTROL_START, searchResultReferenceControlCreation ) );
 
         // State: [SEARCH_RESULT_REFERENCE_CONTROL_END] - Tag: <ref>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_CONTROL_END.ordinal()].put( new Tag( "ref",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_CONTROL_END.ordinal()].put( new Tag( DsmlLiterals.REF,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_CONTROL_END,
                 Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_REF_END, searchResultReferenceAddRef ) );
 
         // State: [SEARCH_RESULT_REFERENCE_REF_END] - Tag: <ref>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_REF_END.ordinal()].put( new Tag( "ref", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_REF_END.ordinal()].put( new Tag( DsmlLiterals.REF, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_REF_END,
                 Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_REF_END, searchResultReferenceAddRef ) );
 
         // State: [SEARCH_RESULT_REFERENCE_REF_END] - Tag: </searchResultReference>
         super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_REF_END.ordinal()].put( new Tag(
-            "searchResultReference",
+            DsmlLiterals.SEARCH_RESULT_REFERENCE,
             Tag.END ), new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_REF_END,
             Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_LOOP, null ) );
 
@@ -2042,12 +2043,12 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
 
         // State: [SEARCH_RESULT_REFERENCE_LOOP] - Tag: <searchResultReference>
         super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_LOOP.ordinal()].put( new Tag(
-            "searchResultReference",
+            DsmlLiterals.SEARCH_RESULT_REFERENCE,
             Tag.START ), new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_LOOP,
             Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE, searchResultReferenceCreation ) );
 
         // State: [SEARCH_RESULT_REFERENCE_LOOP] - Tag: <searchResultDone>
-        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_LOOP.ordinal()].put( new Tag( "searchResultDone",
+        super.transitions[Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_LOOP.ordinal()].put( new Tag( DsmlLiterals.SEARCH_RESULT_DONE,
             Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SEARCH_RESULT_REFERENCE_LOOP, Dsmlv2StatesEnum.LDAP_RESULT,
                 searchResultDoneCreation ) );
@@ -2062,34 +2063,34 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
         super.transitions[Dsmlv2StatesEnum.GRAMMAR_END.ordinal()] = new HashMap<Tag, GrammarTransition>();
 
         // State: [INIT_GRAMMAR_STATE] - Tag: <envelope>
-        super.transitions[Dsmlv2StatesEnum.INIT_GRAMMAR_STATE.ordinal()].put( new Tag( "envelope", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.INIT_GRAMMAR_STATE.ordinal()].put( new Tag( DsmlLiterals.ENVELOPE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.INIT_GRAMMAR_STATE, Dsmlv2StatesEnum.SOAP_ENVELOPE_START_TAG,
                 null ) );
 
         // state: [SOAP_ENVELOPE_START_TAG] -> Tag: <header>
-        super.transitions[Dsmlv2StatesEnum.SOAP_ENVELOPE_START_TAG.ordinal()].put( new Tag( "header", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SOAP_ENVELOPE_START_TAG.ordinal()].put( new Tag( DsmlLiterals.HEADER, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SOAP_ENVELOPE_START_TAG, Dsmlv2StatesEnum.SOAP_HEADER_START_TAG,
                 ParserUtils.READ_SOAP_HEADER ) );
 
         // state: [SOAP_HEADER_START_TAG] -> Tag: </header>
         super.transitions[Dsmlv2StatesEnum.SOAP_HEADER_START_TAG.ordinal()]
-            .put( new Tag( "header", Tag.END ),
+            .put( new Tag( DsmlLiterals.HEADER, Tag.END ),
                 new GrammarTransition( Dsmlv2StatesEnum.SOAP_HEADER_START_TAG, Dsmlv2StatesEnum.SOAP_HEADER_END_TAG,
                     null ) );
 
         // state: [SOAP_HEADER_END_TAG] -> Tag: <body>
-        super.transitions[Dsmlv2StatesEnum.SOAP_HEADER_END_TAG.ordinal()].put( new Tag( "body", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SOAP_HEADER_END_TAG.ordinal()].put( new Tag( DsmlLiterals.BODY, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SOAP_HEADER_END_TAG, Dsmlv2StatesEnum.SOAP_BODY_START_TAG, null ) );
 
         // state: [SOAP_BODY_START_TAG] -> Tag: <batchResponse>
-        super.transitions[Dsmlv2StatesEnum.SOAP_BODY_START_TAG.ordinal()].put( new Tag( "batchResponse", Tag.START ),
+        super.transitions[Dsmlv2StatesEnum.SOAP_BODY_START_TAG.ordinal()].put( new Tag( DsmlLiterals.BATCH_RESPONSE, Tag.START ),
             new GrammarTransition( Dsmlv2StatesEnum.SOAP_BODY_START_TAG, Dsmlv2StatesEnum.BATCH_RESPONSE_LOOP,
                 batchResponseCreation ) );
 
         // the optional transition if no soap header is present
         // state: [SOAP_ENVELOPE_START_TAG] -> Tag: <body>
         super.transitions[Dsmlv2StatesEnum.SOAP_ENVELOPE_START_TAG.ordinal()]
-            .put( new Tag( "body", Tag.START ),
+            .put( new Tag( DsmlLiterals.BODY, Tag.START ),
                 new GrammarTransition( Dsmlv2StatesEnum.SOAP_ENVELOPE_START_TAG, Dsmlv2StatesEnum.SOAP_BODY_START_TAG,
                     null ) );
 
@@ -2097,10 +2098,10 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
         // when the </batchRequest> tag is encountered by the parser and the corresponding action gets executed but in
         // a SOAP envelop we still have two more end tags(</body> and </envelope>) are left so we set those corresponding
         // current and next transition states always to GRAMMAR_END
-        super.transitions[Dsmlv2StatesEnum.GRAMMAR_END.ordinal()].put( new Tag( "body", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.GRAMMAR_END.ordinal()].put( new Tag( DsmlLiterals.BODY, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.GRAMMAR_END, Dsmlv2StatesEnum.GRAMMAR_END, null ) );
 
-        super.transitions[Dsmlv2StatesEnum.GRAMMAR_END.ordinal()].put( new Tag( "envelope", Tag.END ),
+        super.transitions[Dsmlv2StatesEnum.GRAMMAR_END.ordinal()].put( new Tag( DsmlLiterals.ENVELOPE, Tag.END ),
             new GrammarTransition( Dsmlv2StatesEnum.GRAMMAR_END, Dsmlv2StatesEnum.GRAMMAR_END, null ) );
 
         //------------------------------------------
@@ -2175,7 +2176,7 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
         // Checking and adding the Control's attributes
         String attributeValue;
         // TYPE
-        attributeValue = xpp.getAttributeValue( "", "type" );
+        attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.TYPE );
 
         if ( attributeValue != null )
         {
@@ -2204,15 +2205,15 @@ public final class Dsmlv2ResponseGrammar extends AbstractGrammar implements Gram
         }
 
         // CRITICALITY
-        attributeValue = xpp.getAttributeValue( "", "criticality" );
+        attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.CRITICALITY );
 
         if ( attributeValue != null )
         {
-            if ( "true".equals( attributeValue ) )
+            if ( DsmlLiterals.TRUE.equals( attributeValue ) )
             {
                 control.setCritical( true );
             }
-            else if ( "false".equals( attributeValue ) )
+            else if ( DsmlLiterals.FALSE.equals( attributeValue ) )
             {
                 control.setCritical( false );
             }
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/ErrorResponse.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/ErrorResponse.java
index 811b7dc66..b0baabd98 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/ErrorResponse.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/ErrorResponse.java
@@ -21,11 +21,13 @@ package org.apache.directory.api.dsmlv2.response;
 
 
 import org.apache.directory.api.dsmlv2.DsmlDecorator;
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.AbstractResponse;
 import org.apache.directory.api.ldap.model.message.MessageTypeEnum;
 import org.apache.directory.api.ldap.model.message.Response;
+import org.apache.directory.api.util.Strings;
 import org.dom4j.Element;
 import org.dom4j.tree.DefaultElement;
 
@@ -52,8 +54,6 @@ import org.dom4j.tree.DefaultElement;
  */
 public class ErrorResponse extends AbstractResponse implements Response, DsmlDecorator<Response>
 {
-    private static final String ERROR_RESPONSE_TAG = "errorResponse";
-
     /**
      * This enum represents the different types of error response
      *
@@ -130,27 +130,27 @@ public class ErrorResponse extends AbstractResponse implements Response, DsmlDec
 
         if ( root != null )
         {
-            element = root.addElement( ERROR_RESPONSE_TAG );
+            element = root.addElement( DsmlLiterals.ERROR_RESPONSE );
         }
         else
         {
-            element = new DefaultElement( ERROR_RESPONSE_TAG );
+            element = new DefaultElement( DsmlLiterals.ERROR_RESPONSE );
         }
 
         // RequestID
         if ( requestID != 0 )
         {
-            element.addAttribute( "requestID", Integer.toString( requestID ) );
+            element.addAttribute( DsmlLiterals.REQUEST_ID, Integer.toString( requestID ) );
         }
 
         // Type
-        element.addAttribute( "type", getTypeDescr( errorType ) );
+        element.addAttribute( DsmlLiterals.TYPE, getTypeDescr( errorType ) );
 
         // TODO Add Detail
 
-        if ( ( message != null ) && ( !"".equals( message ) ) )
+        if ( Strings.isNotEmpty( message ) )
         {
-            Element messageElement = element.addElement( "message" );
+            Element messageElement = element.addElement( DsmlLiterals.MESSAGE );
             messageElement.addText( message );
         }
 
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/ExtendedResponseDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/ExtendedResponseDsml.java
index e3395ac86..b4ce96c70 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/ExtendedResponseDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/ExtendedResponseDsml.java
@@ -20,7 +20,9 @@
 package org.apache.directory.api.dsmlv2.response;
 
 
+import org.apache.commons.text.StringEscapeUtils;
 import org.apache.directory.api.asn1.util.Oid;
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.dsmlv2.ParserUtils;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.ExtendedResponse;
@@ -41,7 +43,6 @@ import org.dom4j.tree.DefaultElement;
 public class ExtendedResponseDsml extends AbstractResultResponseDsml<ExtendedResponse>
     implements ExtendedResponse
 {
-    private static final String EXTENDED_RESPONSE_TAG = "extendedResponse";
     private byte[] response;
 
 
@@ -52,7 +53,7 @@ public class ExtendedResponseDsml extends AbstractResultResponseDsml<ExtendedRes
      */
     public ExtendedResponseDsml( LdapApiService codec )
     {
-        super( codec, new OpaqueExtendedResponse( "" ) );
+        super( codec, new OpaqueExtendedResponse( Strings.EMPTY_STRING ) );
     }
 
 
@@ -88,11 +89,11 @@ public class ExtendedResponseDsml extends AbstractResultResponseDsml<ExtendedRes
 
         if ( root != null )
         {
-            element = root.addElement( EXTENDED_RESPONSE_TAG );
+            element = root.addElement( DsmlLiterals.EXTENDED_RESPONSE );
         }
         else
         {
-            element = new DefaultElement( EXTENDED_RESPONSE_TAG );
+            element = new DefaultElement( DsmlLiterals.EXTENDED_RESPONSE );
         }
 
         ExtendedResponse extendedResponse = getDecorated();
@@ -106,7 +107,7 @@ public class ExtendedResponseDsml extends AbstractResultResponseDsml<ExtendedRes
         String responseName = extendedResponse.getResponseName();
         if ( responseName != null )
         {
-            element.addElement( "responseName" ).addText( responseName );
+            element.addElement(  DsmlLiterals.RESPONSE_NAME ).addText( responseName );
         }
 
         // Response
@@ -121,14 +122,14 @@ public class ExtendedResponseDsml extends AbstractResultResponseDsml<ExtendedRes
                 element.getDocument().getRootElement().add( xsdNamespace );
                 element.getDocument().getRootElement().add( xsiNamespace );
 
-                Element responseElement = element.addElement( "response" )
+                Element responseElement = element.addElement( DsmlLiterals.RESPONSE )
                     .addText( ParserUtils.base64Encode( responseValue ) );
-                responseElement.addAttribute( new QName( "type", xsiNamespace ), ParserUtils.XSD + ":"
+                responseElement.addAttribute( new QName( DsmlLiterals.TYPE, xsiNamespace ), ParserUtils.XSD_COLON
                     + ParserUtils.BASE64BINARY );
             }
             else
             {
-                element.addElement( "response" ).addText( Strings.utf8ToString( ( byte[] ) responseValue ) );
+                element.addElement( DsmlLiterals.RESPONSE ).addText( StringEscapeUtils.escapeXml11( Strings.utf8ToString( ( byte[] ) responseValue ) ) );
             }
         }
 
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/LdapResultDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/LdapResultDsml.java
index 4bc4879a8..5c37c84c3 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/LdapResultDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/LdapResultDsml.java
@@ -24,6 +24,7 @@ import java.util.Collection;
 import java.util.List;
 
 import org.apache.directory.api.dsmlv2.DsmlDecorator;
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.dsmlv2.ParserUtils;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.LdapResult;
@@ -78,7 +79,7 @@ public class LdapResultDsml implements DsmlDecorator<LdapResult>, LdapResult
         int requestID = message.getMessageId();
         if ( requestID > 0 )
         {
-            root.addAttribute( "requestID", Integer.toString( requestID ) );
+            root.addAttribute( DsmlLiterals.REQUEST_ID, Integer.toString( requestID ) );
         }
 
         // Matched Dn
@@ -86,23 +87,23 @@ public class LdapResultDsml implements DsmlDecorator<LdapResult>, LdapResult
 
         if ( !Dn.isNullOrEmpty( matchedDn ) )
         {
-            root.addAttribute( "matchedDn", matchedDn.getName() );
+            root.addAttribute( DsmlLiterals.MATCHED_DN, matchedDn.getName() );
         }
 
         // Controls
         ParserUtils.addControls( codec, root, message.getControls().values(), false );
 
         // ResultCode
-        Element resultCodeElement = root.addElement( "resultCode" );
-        resultCodeElement.addAttribute( "code", Integer.toString( result.getResultCode().getResultCode() ) );
-        resultCodeElement.addAttribute( "descr", result.getResultCode().getMessage() );
+        Element resultCodeElement = root.addElement( DsmlLiterals.RESULT_CODE );
+        resultCodeElement.addAttribute( DsmlLiterals.CODE, Integer.toString( result.getResultCode().getResultCode() ) );
+        resultCodeElement.addAttribute( DsmlLiterals.DESCR, result.getResultCode().getMessage() );
 
         // ErrorMessage
         String errorMessage = result.getDiagnosticMessage();
 
         if ( ( errorMessage != null ) && ( errorMessage.length() != 0 ) )
         {
-            Element errorMessageElement = root.addElement( "errorMessage" );
+            Element errorMessageElement = root.addElement( DsmlLiterals.ERROR_MESSAGE );
             errorMessageElement.addText( errorMessage );
         }
 
@@ -115,7 +116,7 @@ public class LdapResultDsml implements DsmlDecorator<LdapResult>, LdapResult
             {
                 for ( String ldapUrl : ldapUrls )
                 {
-                    Element referalElement = root.addElement( "referal" );
+                    Element referalElement = root.addElement( DsmlLiterals.REFERRAL );
                     referalElement.addText( ldapUrl );
                 }
             }
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/ModDNResponseDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/ModDNResponseDsml.java
index 78d4ec6b5..cf7de2f7e 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/ModDNResponseDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/ModDNResponseDsml.java
@@ -20,6 +20,7 @@
 package org.apache.directory.api.dsmlv2.response;
 
 
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.MessageTypeEnum;
 import org.apache.directory.api.ldap.model.message.ModifyDnResponse;
@@ -36,9 +37,6 @@ import org.dom4j.tree.DefaultElement;
 public class ModDNResponseDsml extends AbstractResultResponseDsml<ModifyDnResponse>
     implements ModifyDnResponse
 {
-    private static final String MOD_DN_RESPONSE_TAG = "modDNResponse";
-
-
     /**
      * Creates a new getDecoratedMessage() of ModDNResponseDsml.
      * 
@@ -82,11 +80,11 @@ public class ModDNResponseDsml extends AbstractResultResponseDsml<ModifyDnRespon
 
         if ( root != null )
         {
-            element = root.addElement( MOD_DN_RESPONSE_TAG );
+            element = root.addElement( DsmlLiterals.MOD_DN_RESPONSE );
         }
         else
         {
-            element = new DefaultElement( MOD_DN_RESPONSE_TAG );
+            element = new DefaultElement( DsmlLiterals.MOD_DN_RESPONSE );
         }
 
         LdapResultDsml ldapResultDsml = new LdapResultDsml( getCodecService(),
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/ModifyResponseDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/ModifyResponseDsml.java
index c1d326936..f13978ff1 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/ModifyResponseDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/ModifyResponseDsml.java
@@ -20,6 +20,7 @@
 package org.apache.directory.api.dsmlv2.response;
 
 
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.MessageTypeEnum;
 import org.apache.directory.api.ldap.model.message.ModifyResponse;
@@ -36,9 +37,6 @@ import org.dom4j.tree.DefaultElement;
 public class ModifyResponseDsml extends AbstractResultResponseDsml<ModifyResponse>
     implements ModifyResponse
 {
-    private static final String MODIFY_RESPONSE_TAG = "modifyResponse";
-
-
     /**
      * Creates a new getDecoratedMessage() of ModifyResponseDsml.
      * 
@@ -82,11 +80,11 @@ public class ModifyResponseDsml extends AbstractResultResponseDsml<ModifyRespons
 
         if ( root != null )
         {
-            element = root.addElement( MODIFY_RESPONSE_TAG );
+            element = root.addElement( DsmlLiterals.MODIFY_RESPONSE );
         }
         else
         {
-            element = new DefaultElement( MODIFY_RESPONSE_TAG );
+            element = new DefaultElement( DsmlLiterals.MODIFY_RESPONSE );
         }
 
         LdapResultDsml ldapResultDsml = new LdapResultDsml( getCodecService(),
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/SearchResponseDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/SearchResponseDsml.java
index b99e19064..64ecd84cd 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/SearchResponseDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/SearchResponseDsml.java
@@ -24,6 +24,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.directory.api.dsmlv2.DsmlDecorator;
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.Message;
@@ -44,8 +45,6 @@ import org.dom4j.tree.DefaultElement;
  */
 public class SearchResponseDsml extends AbstractResponseDsml<Response>
 {
-    private static final String SEARCH_RESPONSE_TAG = "searchResponse";
-
     /** The responses */
     private List<DsmlDecorator<? extends Response>> responses =
         new ArrayList<>();
@@ -154,11 +153,11 @@ public class SearchResponseDsml extends AbstractResponseDsml<Response>
 
         if ( root != null )
         {
-            element = root.addElement( SEARCH_RESPONSE_TAG );
+            element = root.addElement( DsmlLiterals.SEARCH_RESPONSE );
         }
         else
         {
-            element = new DefaultElement( SEARCH_RESPONSE_TAG );
+            element = new DefaultElement( DsmlLiterals.SEARCH_RESPONSE );
         }
 
         // RequestID
@@ -167,7 +166,7 @@ public class SearchResponseDsml extends AbstractResponseDsml<Response>
             int requestID = getDecorated().getMessageId();
             if ( requestID > 0 )
             {
-                element.addAttribute( "requestID", Integer.toString( requestID ) );
+                element.addAttribute( DsmlLiterals.REQUEST_ID, Integer.toString( requestID ) );
             }
         }
 
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/SearchResultDoneDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/SearchResultDoneDsml.java
index 20b60c536..a9fb39816 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/SearchResultDoneDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/SearchResultDoneDsml.java
@@ -20,6 +20,7 @@
 package org.apache.directory.api.dsmlv2.response;
 
 
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.MessageTypeEnum;
 import org.apache.directory.api.ldap.model.message.SearchResultDone;
@@ -36,9 +37,6 @@ import org.dom4j.tree.DefaultElement;
 public class SearchResultDoneDsml extends AbstractResultResponseDsml<SearchResultDone>
     implements SearchResultDone
 {
-    private static final String SEARCH_RESULT_DONE_TAG = "searchResultDone";
-
-
     /**
      * Creates a new getDecoratedMessage() of SearchResultDoneDsml.
      * 
@@ -82,11 +80,11 @@ public class SearchResultDoneDsml extends AbstractResultResponseDsml<SearchResul
 
         if ( root != null )
         {
-            element = root.addElement( SEARCH_RESULT_DONE_TAG );
+            element = root.addElement( DsmlLiterals.SEARCH_RESULT_DONE );
         }
         else
         {
-            element = new DefaultElement( SEARCH_RESULT_DONE_TAG );
+            element = new DefaultElement( DsmlLiterals.SEARCH_RESULT_DONE );
         }
 
         LdapResultDsml ldapResultDsml =
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/SearchResultEntryDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/SearchResultEntryDsml.java
index 06ff04c58..41b92daf8 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/SearchResultEntryDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/SearchResultEntryDsml.java
@@ -20,6 +20,8 @@
 package org.apache.directory.api.dsmlv2.response;
 
 
+import org.apache.commons.text.StringEscapeUtils;
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.dsmlv2.ParserUtils;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.entry.Attribute;
@@ -47,8 +49,6 @@ public class SearchResultEntryDsml
     extends AbstractResponseDsml<SearchResultEntry>
     implements SearchResultEntry
 {
-    private static final String SEARCH_RESULT_ENTRY_TAG = "searchResultEntry";
-
     /** The current attribute being processed */
     private Attribute currentAttribute;
 
@@ -138,26 +138,30 @@ public class SearchResultEntryDsml
 
         if ( root != null )
         {
-            element = root.addElement( SEARCH_RESULT_ENTRY_TAG );
+            element = root.addElement( DsmlLiterals.SEARCH_RESULT_ENTRY );
         }
         else
         {
-            element = new DefaultElement( SEARCH_RESULT_ENTRY_TAG );
+            element = new DefaultElement( DsmlLiterals.SEARCH_RESULT_ENTRY );
         }
 
         SearchResultEntry searchResultEntry = getDecorated();
-        element.addAttribute( "dn", searchResultEntry.getObjectName().getName() );
+        element.addAttribute( DsmlLiterals.DN, searchResultEntry.getObjectName().getName() );
 
         Entry entry = searchResultEntry.getEntry();
         for ( Attribute attribute : entry )
         {
 
-            Element attributeElement = element.addElement( "attr" );
-            attributeElement.addAttribute( "name", attribute.getUpId() );
+            Element attributeElement = element.addElement( DsmlLiterals.ATTR );
+            attributeElement.addAttribute( DsmlLiterals.NAME, attribute.getUpId() );
 
             for ( Value value : attribute )
             {
-                if ( ParserUtils.needsBase64Encoding( value.getString() ) )
+                if ( value.isHumanReadable() )
+                {
+                    attributeElement.addElement( DsmlLiterals.VALUE ).addText( StringEscapeUtils.escapeXml11( value.getString() ) );
+                }
+                else
                 {
                     Namespace xsdNamespace = new Namespace( ParserUtils.XSD, ParserUtils.XML_SCHEMA_URI );
                     Namespace xsiNamespace = new Namespace( ParserUtils.XSI, ParserUtils.XML_SCHEMA_INSTANCE_URI );
@@ -170,15 +174,11 @@ public class SearchResultEntryDsml
                         docRoot.add( xsiNamespace );
                     }
 
-                    Element valueElement = attributeElement.addElement( "value" ).addText(
+                    Element valueElement = attributeElement.addElement( DsmlLiterals.VALUE ).addText(
                         ParserUtils.base64Encode( value.getBytes() ) );
-                    valueElement.addAttribute( new QName( "type", xsiNamespace ), ParserUtils.XSD + ":"
+                    valueElement.addAttribute( new QName( DsmlLiterals.TYPE, xsiNamespace ), ParserUtils.XSD_COLON
                         + ParserUtils.BASE64BINARY );
                 }
-                else
-                {
-                    attributeElement.addElement( "value" ).addText( value.getString() );
-                }
             }
         }
 
diff --git a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/SearchResultReferenceDsml.java b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/SearchResultReferenceDsml.java
index 77fbb3e4d..dc0713b16 100644
--- a/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/SearchResultReferenceDsml.java
+++ b/dsml/parser/src/main/java/org/apache/directory/api/dsmlv2/response/SearchResultReferenceDsml.java
@@ -22,6 +22,7 @@ package org.apache.directory.api.dsmlv2.response;
 
 import java.util.Collection;
 
+import org.apache.directory.api.dsmlv2.DsmlLiterals;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.message.MessageTypeEnum;
 import org.apache.directory.api.ldap.model.message.Referral;
@@ -41,9 +42,6 @@ public class SearchResultReferenceDsml
     extends AbstractResponseDsml<SearchResultReference>
     implements SearchResultReference
 {
-    private static final String SEARCH_RESULT_REFERENCE_TAG = "searchResultReference";
-
-
     /**
      * Creates a new getDecoratedMessage() of SearchResultReferenceDsml.
      * 
@@ -87,17 +85,17 @@ public class SearchResultReferenceDsml
 
         if ( root != null )
         {
-            element = root.addElement( SEARCH_RESULT_REFERENCE_TAG );
+            element = root.addElement( DsmlLiterals.SEARCH_RESULT_REFERENCE );
         }
         else
         {
-            element = new DefaultElement( SEARCH_RESULT_REFERENCE_TAG );
+            element = new DefaultElement( DsmlLiterals.SEARCH_RESULT_REFERENCE );
         }
 
         // Adding References
         for ( String url : getDecorated().getReferral().getLdapUrls() )
         {
-            element.addElement( "ref" ).addText( url );
+            element.addElement( DsmlLiterals.REF ).addText( url );
         }
 
         return element;
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/AbstractResponseTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/AbstractResponseTest.java
index 7dee5d1e6..75ce1c93f 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/AbstractResponseTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/AbstractResponseTest.java
@@ -61,6 +61,7 @@ public abstract class AbstractResponseTest extends AbstractTest
         {
             fail( e.getMessage() );
         }
+        
         fail();
     }
 }
diff --git a/pom.xml b/pom.xml
index 24b13c9f3..4eb13ef40 100644
--- a/pom.xml
+++ b/pom.xml
@@ -66,6 +66,7 @@
     <commons.collections.version>4.4</commons.collections.version>
     <commons.lang.version>3.12.0</commons.lang.version>
     <commons.pool.version>2.11.1</commons.pool.version>
+    <commons.text.version>1.9</commons.text.version>
     <dom4j.version>2.1.3</dom4j.version>
     <forbiddenapis.version>2.6</forbiddenapis.version>
     <hamcrest.version>2.2</hamcrest.version>
@@ -545,6 +546,12 @@
         <version>${commons.pool.version}</version>
       </dependency>
 
+      <dependency>
+        <groupId>org.apache.commons</groupId>
+        <artifactId>commons-text</artifactId>
+        <version>${commons.text.version}</version>
+      </dependency>
+
       <!-- OSGi and Felix Dependencies -->
 
       <dependency>