Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / XmlUtils / System / Xml / Xsl / Xslt / Stylesheet.cs / 1 / Stylesheet.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
using System.Collections.Generic;
using System.Diagnostics;
using System.Xml.Xsl.Qil;
namespace System.Xml.Xsl.Xslt {
internal class Stylesheet {
private Compiler compiler;
public List ImportHrefs = new List();
public Stylesheet[] Imports = null;
public List Templates = new List();
public List GlobalVarPars = new List();
// xsl:attribute-set/@name -> AttributeSet
public Dictionary AttributeSets = new Dictionary();
// xsl:template/@mode -> list of @match'es
public Dictionary> TemplateMatches = new Dictionary>();
// mode -> xsl:apply-import functions for that mode
public Dictionary> ApplyImportsFunctions = new Dictionary>();
private int importPrecedence;
private int orderNumber = 0;
/*
WhitespaceRules[0] - rules with default priority 0
WhitespaceRules[1] - rules with default priority -0.25
WhitespaceRules[2] - rules with default priority -0.5
*/
public List[] WhitespaceRules = new List[3];
public Stylesheet(Compiler compiler, int importPrecedence) {
this.compiler = compiler;
this.importPrecedence = importPrecedence;
WhitespaceRules[0] = new List();
WhitespaceRules[1] = new List();
WhitespaceRules[2] = new List();
}
public int ImportPrecedence { get { return importPrecedence; } }
public void AddWhitespaceRule(int index, WhitespaceRule rule) {
WhitespaceRules[index].Add(rule);
}
public bool AddVarPar(VarPar var) {
Debug.Assert(var.NodeType == XslNodeType.Variable || var.NodeType == XslNodeType.Param);
Debug.Assert(var.Name.NamespaceUri != null, "Name must be resolved in XsltLoader");
foreach (XslNode prevVar in GlobalVarPars) {
if (prevVar.Name.Equals(var.Name)) {
// [ERR XT0630] It is a static error if a stylesheet contains more than one binding
// of a global variable with the same name and same import precedence, unless it also
// contains another binding with the same name and higher import precedence.
return compiler.AllGlobalVarPars.ContainsKey(var.Name);
}
}
GlobalVarPars.Add(var);
return true;
}
public bool AddTemplate(Template template) {
Debug.Assert(template.ImportPrecedence == 0);
template.ImportPrecedence = this.importPrecedence;
template.OrderNumber = this.orderNumber++;
compiler.AllTemplates.Add(template);
if (template.Name != null) {
Template old;
if (!compiler.NamedTemplates.TryGetValue(template.Name, out old)) {
compiler.NamedTemplates[template.Name] = template;
} else {
Debug.Assert(template.ImportPrecedence <= old.ImportPrecedence, "Global objects are processed in order of decreasing import precedence");
if (old.ImportPrecedence == template.ImportPrecedence) {
return false;
}
}
}
if (template.Match != null) {
Templates.Add(template);
}
return true;
}
public void AddTemplateMatch(Template template, QilLoop filter) {
List matchesForMode;
if (!TemplateMatches.TryGetValue(template.Mode, out matchesForMode)) {
matchesForMode = TemplateMatches[template.Mode] = new List();
}
matchesForMode.Add(new TemplateMatch(template, filter));
}
public void SortTemplateMatches() {
foreach (QilName mode in TemplateMatches.Keys) {
TemplateMatches[mode].Sort(TemplateMatch.Comparer);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
using System.Collections.Generic;
using System.Diagnostics;
using System.Xml.Xsl.Qil;
namespace System.Xml.Xsl.Xslt {
internal class Stylesheet {
private Compiler compiler;
public List ImportHrefs = new List();
public Stylesheet[] Imports = null;
public List Templates = new List();
public List GlobalVarPars = new List();
// xsl:attribute-set/@name -> AttributeSet
public Dictionary AttributeSets = new Dictionary();
// xsl:template/@mode -> list of @match'es
public Dictionary> TemplateMatches = new Dictionary>();
// mode -> xsl:apply-import functions for that mode
public Dictionary> ApplyImportsFunctions = new Dictionary>();
private int importPrecedence;
private int orderNumber = 0;
/*
WhitespaceRules[0] - rules with default priority 0
WhitespaceRules[1] - rules with default priority -0.25
WhitespaceRules[2] - rules with default priority -0.5
*/
public List[] WhitespaceRules = new List[3];
public Stylesheet(Compiler compiler, int importPrecedence) {
this.compiler = compiler;
this.importPrecedence = importPrecedence;
WhitespaceRules[0] = new List();
WhitespaceRules[1] = new List();
WhitespaceRules[2] = new List();
}
public int ImportPrecedence { get { return importPrecedence; } }
public void AddWhitespaceRule(int index, WhitespaceRule rule) {
WhitespaceRules[index].Add(rule);
}
public bool AddVarPar(VarPar var) {
Debug.Assert(var.NodeType == XslNodeType.Variable || var.NodeType == XslNodeType.Param);
Debug.Assert(var.Name.NamespaceUri != null, "Name must be resolved in XsltLoader");
foreach (XslNode prevVar in GlobalVarPars) {
if (prevVar.Name.Equals(var.Name)) {
// [ERR XT0630] It is a static error if a stylesheet contains more than one binding
// of a global variable with the same name and same import precedence, unless it also
// contains another binding with the same name and higher import precedence.
return compiler.AllGlobalVarPars.ContainsKey(var.Name);
}
}
GlobalVarPars.Add(var);
return true;
}
public bool AddTemplate(Template template) {
Debug.Assert(template.ImportPrecedence == 0);
template.ImportPrecedence = this.importPrecedence;
template.OrderNumber = this.orderNumber++;
compiler.AllTemplates.Add(template);
if (template.Name != null) {
Template old;
if (!compiler.NamedTemplates.TryGetValue(template.Name, out old)) {
compiler.NamedTemplates[template.Name] = template;
} else {
Debug.Assert(template.ImportPrecedence <= old.ImportPrecedence, "Global objects are processed in order of decreasing import precedence");
if (old.ImportPrecedence == template.ImportPrecedence) {
return false;
}
}
}
if (template.Match != null) {
Templates.Add(template);
}
return true;
}
public void AddTemplateMatch(Template template, QilLoop filter) {
List matchesForMode;
if (!TemplateMatches.TryGetValue(template.Mode, out matchesForMode)) {
matchesForMode = TemplateMatches[template.Mode] = new List();
}
matchesForMode.Add(new TemplateMatch(template, filter));
}
public void SortTemplateMatches() {
foreach (QilName mode in TemplateMatches.Keys) {
TemplateMatches[mode].Sort(TemplateMatch.Comparer);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WinEventWrap.cs
- ControlUtil.cs
- Base64Encoding.cs
- EncoderParameters.cs
- GcSettings.cs
- exports.cs
- ToolBarPanel.cs
- AccessViolationException.cs
- TrackingDataItem.cs
- BindingGroup.cs
- CalendarDesigner.cs
- ReceiveSecurityHeaderElementManager.cs
- SafeUserTokenHandle.cs
- ComboBox.cs
- DataSourceControl.cs
- FragmentQuery.cs
- LinkedList.cs
- ToolStripRendererSwitcher.cs
- SqlDataAdapter.cs
- Vector3dCollection.cs
- XPathSingletonIterator.cs
- Converter.cs
- RequestDescription.cs
- TemplateBaseAction.cs
- GroupBoxAutomationPeer.cs
- Trigger.cs
- ScrollEvent.cs
- SignedPkcs7.cs
- DataTableNewRowEvent.cs
- SelectionRange.cs
- WpfSharedXamlSchemaContext.cs
- CaseCqlBlock.cs
- UIElementParaClient.cs
- SelfIssuedAuthRSACryptoProvider.cs
- RawStylusInputCustomData.cs
- SchemaElementLookUpTableEnumerator.cs
- RenderingBiasValidation.cs
- RolePrincipal.cs
- BooleanAnimationBase.cs
- ClientWindowsAuthenticationMembershipProvider.cs
- XamlSerializationHelper.cs
- CngUIPolicy.cs
- SafeCryptoHandles.cs
- XmlSchemaComplexContent.cs
- OperationResponse.cs
- RootProfilePropertySettingsCollection.cs
- AppDomainAttributes.cs
- PeerNameRecordCollection.cs
- Dynamic.cs
- ProfileManager.cs
- AutoGeneratedField.cs
- RouteItem.cs
- FamilyMap.cs
- DataGridCaption.cs
- ResourceProviderFactory.cs
- ConfigurationElementProperty.cs
- MissingMemberException.cs
- HtmlToClrEventProxy.cs
- SQLStringStorage.cs
- DispatcherOperation.cs
- DoubleConverter.cs
- CompressedStack.cs
- ComponentManagerBroker.cs
- EditingMode.cs
- DiffuseMaterial.cs
- XamlFigureLengthSerializer.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- FormatterServices.cs
- ScriptResourceAttribute.cs
- GPRECT.cs
- RemoveStoryboard.cs
- ParameterBuilder.cs
- SlipBehavior.cs
- CodeNamespaceCollection.cs
- VirtualDirectoryMapping.cs
- _OSSOCK.cs
- ContextMenuAutomationPeer.cs
- WSFederationHttpSecurity.cs
- ThreadExceptionDialog.cs
- XmlDataSourceView.cs
- ParamArrayAttribute.cs
- ScrollChrome.cs
- EditCommandColumn.cs
- CompModSwitches.cs
- iisPickupDirectory.cs
- EpmContentSerializer.cs
- CacheEntry.cs
- _SecureChannel.cs
- GeometryCombineModeValidation.cs
- ConfigurationManagerInternal.cs
- ConfigurationException.cs
- OleDbSchemaGuid.cs
- TrackPoint.cs
- IndentTextWriter.cs
- PropertyEntry.cs
- Rights.cs
- _WinHttpWebProxyDataBuilder.cs
- CodeEntryPointMethod.cs
- WpfSharedXamlSchemaContext.cs
- TextWriter.cs