예제 #1
0
        /// <summary>
        /// Loads an XML schema from an embedded resource.
        /// </summary>
        /// <param name="Input">Schema Input stream.</param>
        /// <param name="ResourceName">Resource Name.</param>
        /// <returns>XML Schema.</returns>
        /// <exception cref="XmlSchemaException">If a validation exception occurred.</exception>
        public static XmlSchema LoadSchema(Stream Input, string ResourceName)
        {
            XmlValidator Validator = new XmlValidator(ResourceName);
            XmlSchema    Result    = XmlSchema.Read(Input, Validator.ValidationCallback);

            Validator.AssertNoError();

            return(Result);
        }
예제 #2
0
파일: XSL.cs 프로젝트: xiaguoli/IoTGateway
        /// <summary>
        /// Loads an XML schema from an embedded resource.
        /// </summary>
        /// <param name="ResourceName">Resource Name.</param>
        /// <param name="Assembly">Assembly containing the resource.</param>
        /// <returns>XML Schema.</returns>
        /// <exception cref="XmlSchemaException">If a validation exception occurred.</exception>
        /// <exception cref="IOException">If Resource name is not valid or resource not found.</exception>
        public static XmlSchema LoadSchema(string ResourceName, Assembly Assembly)
        {
            using (Stream f = Assembly.GetManifestResourceStream(ResourceName))
            {
                if (f == null)
                {
                    throw new ArgumentException("Resource not found: " + ResourceName, nameof(ResourceName));
                }

                XmlValidator Validator = new XmlValidator(ResourceName);
                XmlSchema    Result    = XmlSchema.Read(f, Validator.ValidationCallback);

                Validator.AssertNoError();

                return(Result);
            }
        }
예제 #3
0
        /// <summary>
        /// Validates an XML document given a set of XML schemas.
        /// </summary>
        /// <param name="ObjectID">Object ID of XML document. Used in case validation warnings are found during validation.</param>
        /// <param name="Xml">XML document.</param>
        /// <param name="ExpectedRootElement">Expected Root Element local name.</param>
        /// <param name="ExpectedRootElementNamespace">Expected Root Element namespace.</param>
        /// <param name="Schemas">XML schemas.</param>
        /// <exception cref="XmlSchemaException">If a validation exception occurred.</exception>
        public static void Validate(string ObjectID, XmlDocument Xml, string ExpectedRootElement, string ExpectedRootElementNamespace,
                                    params XmlSchema[] Schemas)
        {
            if (!string.IsNullOrEmpty(ExpectedRootElement) &&
                (Xml.DocumentElement is null ||
                 Xml.DocumentElement.LocalName != ExpectedRootElement ||
                 Xml.DocumentElement.NamespaceURI != ExpectedRootElementNamespace))
            {
                throw new XmlSchemaException("Expected root element is " + ExpectedRootElement + " (" + ExpectedRootElementNamespace + ")");
            }

            foreach (XmlSchema Schema in Schemas)
            {
                Xml.Schemas.Add(Schema);
            }

            XmlValidator Validator = new XmlValidator(ObjectID);

            Xml.Validate(Validator.ValidationCallback);

            Validator.AssertNoError();
        }