Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / ChooseAction.cs / 1305376 / ChooseAction.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace System.Xml.Xsl.XsltOld {
using Res = System.Xml.Utils.Res;
using System;
using System.Diagnostics;
using System.Xml;
using System.Xml.XPath;
internal class ChooseAction : ContainerAction {
internal override void Compile(Compiler compiler) {
CompileAttributes(compiler);
if (compiler.Recurse()) {
CompileConditions(compiler);
compiler.ToParent();
}
}
private void CompileConditions(Compiler compiler) {
NavigatorInput input = compiler.Input;
bool when = false;
bool otherwise = false;
do {
switch (input.NodeType) {
case XPathNodeType.Element:
compiler.PushNamespaceScope();
string nspace = input.NamespaceURI;
string name = input.LocalName;
if (Ref.Equal(nspace, input.Atoms.UriXsl)) {
IfAction action = null;
if (Ref.Equal(name, input.Atoms.When)) {
if (otherwise) {
throw XsltException.Create(Res.Xslt_WhenAfterOtherwise);
}
action = compiler.CreateIfAction(IfAction.ConditionType.ConditionWhen);
when = true;
}
else if (Ref.Equal(name, input.Atoms.Otherwise)) {
if (otherwise) {
throw XsltException.Create(Res.Xslt_DupOtherwise);
}
action = compiler.CreateIfAction(IfAction.ConditionType.ConditionOtherwise);
otherwise = true;
}
else {
throw compiler.UnexpectedKeyword();
}
AddAction(action);
}
else {
throw compiler.UnexpectedKeyword();
}
compiler.PopScope();
break;
case XPathNodeType.Comment:
case XPathNodeType.ProcessingInstruction:
case XPathNodeType.Whitespace:
case XPathNodeType.SignificantWhitespace:
break;
default:
throw XsltException.Create(Res.Xslt_InvalidContents, "choose");
}
}
while (compiler.Advance());
if (! when) {
throw XsltException.Create(Res.Xslt_NoWhen);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace System.Xml.Xsl.XsltOld {
using Res = System.Xml.Utils.Res;
using System;
using System.Diagnostics;
using System.Xml;
using System.Xml.XPath;
internal class ChooseAction : ContainerAction {
internal override void Compile(Compiler compiler) {
CompileAttributes(compiler);
if (compiler.Recurse()) {
CompileConditions(compiler);
compiler.ToParent();
}
}
private void CompileConditions(Compiler compiler) {
NavigatorInput input = compiler.Input;
bool when = false;
bool otherwise = false;
do {
switch (input.NodeType) {
case XPathNodeType.Element:
compiler.PushNamespaceScope();
string nspace = input.NamespaceURI;
string name = input.LocalName;
if (Ref.Equal(nspace, input.Atoms.UriXsl)) {
IfAction action = null;
if (Ref.Equal(name, input.Atoms.When)) {
if (otherwise) {
throw XsltException.Create(Res.Xslt_WhenAfterOtherwise);
}
action = compiler.CreateIfAction(IfAction.ConditionType.ConditionWhen);
when = true;
}
else if (Ref.Equal(name, input.Atoms.Otherwise)) {
if (otherwise) {
throw XsltException.Create(Res.Xslt_DupOtherwise);
}
action = compiler.CreateIfAction(IfAction.ConditionType.ConditionOtherwise);
otherwise = true;
}
else {
throw compiler.UnexpectedKeyword();
}
AddAction(action);
}
else {
throw compiler.UnexpectedKeyword();
}
compiler.PopScope();
break;
case XPathNodeType.Comment:
case XPathNodeType.ProcessingInstruction:
case XPathNodeType.Whitespace:
case XPathNodeType.SignificantWhitespace:
break;
default:
throw XsltException.Create(Res.Xslt_InvalidContents, "choose");
}
}
while (compiler.Advance());
if (! when) {
throw XsltException.Create(Res.Xslt_NoWhen);
}
}
}
}
// 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
- GroupBox.cs
- ApplicationException.cs
- IndexedGlyphRun.cs
- UnsafeNativeMethods.cs
- ListViewUpdateEventArgs.cs
- TextAdaptor.cs
- TimeSpan.cs
- MetadataException.cs
- DefaultTraceListener.cs
- SerializationInfoEnumerator.cs
- NestedContainer.cs
- SqlTriggerAttribute.cs
- BaseUriHelper.cs
- MutexSecurity.cs
- ContentValidator.cs
- UrlAuthorizationModule.cs
- TextFormatterImp.cs
- CipherData.cs
- WebPartEditorCancelVerb.cs
- SuppressMergeCheckAttribute.cs
- FileDialog.cs
- GetRecipientRequest.cs
- NeutralResourcesLanguageAttribute.cs
- RegexCapture.cs
- ControlUtil.cs
- ColumnTypeConverter.cs
- StreamGeometry.cs
- KeyConstraint.cs
- DrawingImage.cs
- XmlSchemaExporter.cs
- MatrixTransform.cs
- ExtensionDataObject.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- FrameworkRichTextComposition.cs
- StandardCommandToolStripMenuItem.cs
- StructuredType.cs
- ColumnProvider.cs
- contentDescriptor.cs
- AnimationLayer.cs
- loginstatus.cs
- EntityFrameworkVersions.cs
- XhtmlBasicImageAdapter.cs
- Completion.cs
- SafeThemeHandle.cs
- CalendarAutomationPeer.cs
- SQLInt32Storage.cs
- CustomErrorsSection.cs
- _SingleItemRequestCache.cs
- StructuredTypeEmitter.cs
- PerformanceCounter.cs
- PropertyFilterAttribute.cs
- SimpleWorkerRequest.cs
- FillRuleValidation.cs
- _ListenerAsyncResult.cs
- FullTrustAssembly.cs
- HostedElements.cs
- OracleRowUpdatingEventArgs.cs
- connectionpool.cs
- TypeForwardedFromAttribute.cs
- AuthenticationSection.cs
- GPPOINT.cs
- UrlPath.cs
- ApplicationInfo.cs
- DispatcherExceptionEventArgs.cs
- RowUpdatingEventArgs.cs
- LockCookie.cs
- FormViewUpdateEventArgs.cs
- ResolvedKeyFrameEntry.cs
- ChangeDirector.cs
- TraceUtils.cs
- TableParaClient.cs
- BufferedReadStream.cs
- TypefaceMap.cs
- PagerSettings.cs
- HistoryEventArgs.cs
- XmlDeclaration.cs
- NumericUpDownAcceleration.cs
- XhtmlBasicTextBoxAdapter.cs
- PackagingUtilities.cs
- PropertyMap.cs
- PasswordPropertyTextAttribute.cs
- Table.cs
- LabelLiteral.cs
- ApplicationId.cs
- SqlReferenceCollection.cs
- TabItemAutomationPeer.cs
- PolygonHotSpot.cs
- WebPartZoneBase.cs
- controlskin.cs
- BufferedStream.cs
- Boolean.cs
- StrokeNodeOperations.cs
- FormClosedEvent.cs
- SystemIPv4InterfaceProperties.cs
- UnhandledExceptionEventArgs.cs
- WebPartAddingEventArgs.cs
- OptimalBreakSession.cs
- GregorianCalendar.cs
- SiteIdentityPermission.cs
- TransactionOptions.cs