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