private XslNode XslResultDocument() {
ContextInfo ctxInfo = input.GetAttributes(resultDocumentAttributes);
string format = ParseStringAttribute(0 , "format");
XmlWriterSettings settings = new XmlWriterSettings(); // we should use attFormat to determing settings
string href = ParseStringAttribute(1 , "href");
ParseValidationAttribute(2, /*defVal:*/false);
ParseTypeAttribute(3);
QilName name = ParseQNameAttribute( 4);
TriState byteOrderMask = ParseYesNoAttribute( 6 , "byte-order-mark");
string docTypePublic = ParseStringAttribute(8 , "doctype-public");
string docTypeSystem = ParseStringAttribute(9 , "doctype-system");
bool escapeUriAttributes = ParseYesNoAttribute( 11, "escape-uri-attributes") != TriState.False;
bool includeContentType = ParseYesNoAttribute( 12, "include-content-type") != TriState.False;
settings.Indent = ParseYesNoAttribute( 13, "indent") == TriState.True;
string mediaType = ParseStringAttribute(14, "media-type");
string normalizationForm = ParseStringAttribute(15, "normalization-form");
settings.OmitXmlDeclaration = ParseYesNoAttribute( 16, "omit-xml-declaration") == TriState.True;
settings.Standalone = ParseYesNoAttribute( 17, "standalone" ) == TriState.True ? XmlStandalone.Yes : XmlStandalone.No;
bool undeclarePrefixes = ParseYesNoAttribute( 18, "undeclare-prefixes") == TriState.True;
List<QilName> useCharacterMaps = ParseUseCharacterMaps(19);
string outputVersion = ParseStringAttribute(20, "output-version");
ReportNYI("xsl:result-document");
if (format != null) ReportNYI("xsl:result-document/@format");
if (href == null) {
href = string.Empty;
}
// attHref is a BaseUri of new output tree. It should be resolved relative to "base output URI"
if (input.MoveToXsltAttribute(5, "method")) {
compiler.EnterForwardsCompatible();
XmlOutputMethod outputMethod;
ParseOutputMethod(input.Value, out outputMethod);
if (compiler.ExitForwardsCompatible(input.ForwardCompatibility)) {
settings.OutputMethod = outputMethod;
}
}
if (input.MoveToXsltAttribute(7, "cdata-section-elements")) {
// Do not check the import precedence, the effective value is the union of all specified values
compiler.EnterForwardsCompatible();
string[] qnames = XmlConvert.SplitString(input.Value);
List<XmlQualifiedName> list = new List<XmlQualifiedName>();
for (int i = 0; i < qnames.Length; i++) {
list.Add(ResolveQName(/*ignoreDefaultNs:*/false, qnames[i]));
}
if (compiler.ExitForwardsCompatible(input.ForwardCompatibility)) {
foreach (XmlQualifiedName qname in list) {
settings.CDataSectionElements.Add(qname);
}
}
}
if (input.MoveToXsltAttribute(10, "encoding")) {
try {
// Encoding.GetEncoding() should never throw NotSupportedException, only ArgumentException
settings.Encoding = Encoding.GetEncoding(input.Value);
} catch (ArgumentException) {
if (!input.ForwardCompatibility) {
ReportWarning(/*[XT_004]*/SR.Xslt_InvalidEncoding, input.Value);
}
}
}
if (byteOrderMask != TriState.Unknown) ReportNYI("xsl:result-document/@byte-order-mark");
if (!escapeUriAttributes) ReportNYI("xsl:result-document/@escape-uri-attributes == flase()");
if (!includeContentType) ReportNYI("xsl:output/@include-content-type == flase()");
if (normalizationForm != null) ReportNYI("xsl:result-document/@normalization-form");
if (undeclarePrefixes) ReportNYI("xsl:result-document/@undeclare-prefixes == true()");
if (docTypePublic != null) {
settings.DocTypePublic = docTypePublic;
}
if (docTypeSystem != null) {
settings.DocTypeSystem = docTypeSystem;
}
if (mediaType != null) {
settings.MediaType = mediaType;
}
if (useCharacterMaps != null) ReportNYI("xsl:result-document/@use-character-maps");
if (outputVersion != null) {
// BUGBUG: Check that version is a valid nmtoken
// ignore version since we support only one version for both xml (1.0) and html (4.0)
ReportNYI("xsl:result-document/@output-version");
}
LoadInstructions();
return null;
}
#endif