本文整理匯總了C#中System.Xml.Schema.XmlSchemaSequence.Compile方法的典型用法代碼示例。如果您正苦於以下問題:C# XmlSchemaSequence.Compile方法的具體用法?C# XmlSchemaSequence.Compile怎麽用?C# XmlSchemaSequence.Compile使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類System.Xml.Schema.XmlSchemaSequence
的用法示例。
在下文中一共展示了XmlSchemaSequence.Compile方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。
示例1: CollectContentTypeFromComplexExtension
private void CollectContentTypeFromComplexExtension (ValidationEventHandler h, XmlSchema schema)
{
XmlSchemaComplexContentExtension cce = (XmlSchemaComplexContentExtension) ContentModel.Content;
XmlSchemaComplexType baseComplexType = this.BaseXmlSchemaType as XmlSchemaComplexType;
if (baseComplexType != null)
baseComplexType.CollectSchemaComponent (h ,schema);
// It must exist, but consider validation error case.
if (BaseSchemaTypeName == XmlSchemaComplexType.AnyTypeName)
baseComplexType = XmlSchemaComplexType.AnyType;
// On error case, it simple reject any contents
if (baseComplexType == null) {
validatableParticle = XmlSchemaParticle.Empty;
resolvedContentType = XmlSchemaContentType.Empty;
return;
}
// 3.4.2 complex content {content type}
if (cce.Particle == null || cce.Particle == XmlSchemaParticle.Empty) {
// - 2.1
if (baseComplexType == null) {
// Basically it is an error. Considering ValidationEventHandler.
validatableParticle = XmlSchemaParticle.Empty;
resolvedContentType = XmlSchemaContentType.Empty;
} else {
validatableParticle = baseComplexType.ValidatableParticle;
resolvedContentType = baseComplexType.resolvedContentType;
// Bug #501814
if (resolvedContentType == XmlSchemaContentType.Empty)
resolvedContentType = GetComplexContentType (contentModel);
}
} else if (baseComplexType.validatableParticle == XmlSchemaParticle.Empty
|| baseComplexType == XmlSchemaComplexType.AnyType) {
// - 2.2
validatableParticle = cce.Particle;
resolvedContentType = GetComplexContentType (contentModel);
} else {
// - 2.3 : create a new sequences that merges both contents.
XmlSchemaSequence seq = new XmlSchemaSequence ();
this.CopyInfo (seq);
seq.Items.Add (baseComplexType.validatableParticle);
seq.Items.Add (cce.Particle);
seq.Compile (h, schema);
seq.Validate (h, schema);
validatableParticle = seq;
resolvedContentType = GetComplexContentType (contentModel);
}
if (validatableParticle == null)
validatableParticle = XmlSchemaParticle.Empty;
}
示例2: GetOptimizedParticle
internal override XmlSchemaParticle GetOptimizedParticle (bool isTop)
{
if (OptimizedParticle != null)
return OptimizedParticle;
if (Items.Count == 0 || ValidatedMaxOccurs == 0) {
OptimizedParticle = XmlSchemaParticle.Empty;
return OptimizedParticle;
}
else if (Items.Count == 1) {
if (ValidatedMinOccurs == 1 && ValidatedMaxOccurs == 1) {
XmlSchemaSequence seq = new XmlSchemaSequence ();
this.CopyInfo (seq);
XmlSchemaParticle p = (XmlSchemaParticle) Items [0];
p = p.GetOptimizedParticle (false);
if (p == XmlSchemaParticle.Empty)
OptimizedParticle = p;
else {
seq.Items.Add (p);
seq.CompiledItems.Add (p);
seq.Compile (null, schema);
OptimizedParticle = seq;
}
return OptimizedParticle;
}
}
XmlSchemaAll all = new XmlSchemaAll ();
CopyInfo (all);
CopyOptimizedItems (all);
OptimizedParticle = all;
all.ComputeEmptiable ();
return OptimizedParticle;
}