class PromptStrategy extends AbstractTagStrategy {

    @Override
    public void execute(final VoiceXmlInterpreterContext context,
            final VoiceXmlInterpreter interpreter,
            final FormInterpretationAlgorithm fia, final FormItem item,
            final VoiceXmlNode node) throws JVoiceXMLEvent {
        final Object cond = getAttribute(Prompt.ATTRIBUTE_COND);
        if (Boolean.FALSE.equals(cond)) {
            LOGGER.info("cond '" + cond
                    + "' evaluates to false: skipping prompt");
            return;
        }

        // Create an SSML document from the prompt node
        // Make sure to cast to prompt to access the correct constructor since
        // the VoiceXmlNode constructor does not keep namespaces
        final Prompt prompt = (Prompt) node;
        final Profile profile = context.getProfile();
        final SsmlParser parser = new VoiceXml21SsmlParser(profile, prompt,
                context);
        final SsmlDocument document;
        try {
            document = parser.getDocument();
        } catch (javax.xml.parsers.ParserConfigurationException pce) {
            throw new BadFetchError("Error converting to SSML!", pce);
        }

        // Set the locale
        final Speak speak = document.getSpeak();
        final String lang = (String) getAttribute(Prompt.ATTRIBUTE_XML_LANG);
        if (lang != null) {
            speak.setXmlLang(lang);
        }
        final BargeInType bargeInType = getBargeInType();
        final SpeakableSsmlText speakable = new SpeakableSsmlText(document,
                bargein, bargeInType);
        if (!speakable.isSpeakableTextEmpty()) {
            queueSpeakable(context, fia, speakable);
        }
    }

      PromptStrategy();

}