本文整理汇总了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;
}