System.Xml.Xsl.Xslt.QilGenerator.CompileLetterValueAttribute C# (CSharp) Method

CompileLetterValueAttribute() private method

private CompileLetterValueAttribute ( string attValue, bool fwdCompat ) : QilNode
attValue string
fwdCompat bool
return QilNode
        private QilNode CompileLetterValueAttribute(string attValue, bool fwdCompat)
        {
            const string Default = "default";
            const string Alphabetic = "alphabetic";
            const string Traditional = "traditional";

            string letterValue;
            QilNode result = CompileStringAvt(attValue);

            if (result != null)
            {
                if (result.NodeType == QilNodeType.LiteralString)
                {
                    letterValue = (string)(QilLiteral)result;
                    if (letterValue != Alphabetic && letterValue != Traditional)
                    {
                        if (!fwdCompat)
                        {
                            ReportError(/*[XT_034]*/SR.Xslt_BistateAttribute, "letter-value", Alphabetic, Traditional);
                        }
                        else
                        {
                            // Use default value
                            return _f.String(Default);
                        }
                    }
                    return result;
                }
                else
                {
                    QilIterator i = _f.Let(result);
                    return _f.Loop(i,
                        _f.Conditional(
                            _f.Or(_f.Eq(i, _f.String(Alphabetic)), _f.Eq(i, _f.String(Traditional))),
                            i,
                            fwdCompat ? _f.String(Default) :
                            _f.Error(_lastScope.SourceLine, SR.Xslt_BistateAttribute, "letter-value", Alphabetic, Traditional)
                    ));
                }
            }
            return _f.String(Default);
        }
QilGenerator