Validate an XML document relative to an XML schema

Share:

Description

This function validates an XML document relative to an XML schema to ensure that it has the correct structure, i.e. valid sub-nodes, attributes, etc.

The xmlSchemaValidationErrorHandler is a function that returns a list of functions which can be used to cumulate or collect the errors and warnings from the schema validation operation.

Usage

1
2
3
4
5
xmlSchemaValidate(schema, doc, 
                                 errorHandler = xmlErrorFun(),
                                  options = 0L)

schemaValidationErrorHandler()

Arguments

schema

an object of class xmlSchemaRef which is usually the result of a call to xmlInternalTreeParse with isSchema = TRUE, or xmlSchemaParse.

doc

an XML document which has already been parsed into a XMLInternalDocument or which is a file name or string which is coerced to an XMLInternalDocument-class object

options

an integer giving the options controlling the validation. At present, this is either 0 or 1 and is essentially irrelevant to us. It may be of value in the future.

errorHandler

a function or a list whose first element is a function which is then used as the collector for the warning and error messages reported during the validation. For each warning or error, this function is invoked and the class of the message is either XMLSchemaWarning or XMLSchemaError respectively.

Value

Typically, a list with 3 elements:

status

0 for validated, and non-zero for invalid

errors

a character vector

warnings

a character vector

If an empty error handler is provided (i.e. NULL) just an integer indicating the status of the validation is returned. 0 indicates everything was okay; a non-zero value indicates a validation error. (-1 indicates an internal error in libxml2)

References

libxml2 www.xmlsoft.org

See Also

xmlSchemaParse

Examples

1
2
3
4
5
if(FALSE) {
  xsd = xmlParse(system.file("exampleData", "author.xsd", package = "XML"), isSchema =TRUE)
  doc = xmlInternalTreeParse(system.file("exampleData", "author.xml",  package = "XML"))
  xmlSchemaValidate(xsd, doc)
}

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.