XML::LibXML::RelaxNG(3) User Contributed Perl Documentation XML::LibXML::RelaxNG(3)

# [NAME](#NAME)

XML::LibXML::RelaxNG - RelaxNG Schema Validation

# [SYNOPSIS](#SYNOPSIS)

```
  use XML::LibXML;
  $doc = XML::LibXML->new->parse_file($url);
  $rngschema = XML::LibXML::RelaxNG->new( location => $filename_or_url, no_network => 1 );
  $rngschema = XML::LibXML::RelaxNG->new( string => $xmlschemastring, no_network => 1 );
  $rngschema = XML::LibXML::RelaxNG->new( DOM => $doc, no_network => 1 );
  eval { $rngschema->validate( $doc ); };
```

# [DESCRIPTION](#DESCRIPTION)

The XML::LibXML::RelaxNG class is a tiny frontend to libxml2's RelaxNG implementation. Currently it supports only schema parsing and document validation.

# [METHODS](#METHODS)

[new](#new)

```
  $rngschema = XML::LibXML::RelaxNG->new( location => $filename_or_url, no_network => 1 );
  $rngschema = XML::LibXML::RelaxNG->new( string => $xmlschemastring, no_network => 1 );
  $rngschema = XML::LibXML::RelaxNG->new( DOM => $doc, no_network => 1 );
    
```

The constructor of XML::LibXML::RelaxNG needs to be called with list of parameters. At least location, string or DOM parameter is required to specify source of schema. Optional parameter no\_network set to 1 cause that parser would not access network and optional parameter recover set 1 cause that parser would not call **die()** on errors.

It is important, that each schema only have a single source.

The location parameter allows one to parse a schema from the filesystem or a (non-HTTPS) URL.

The string parameter will parse the schema from the given XML string.

The DOM parameter allows one to parse the schema from a pre-parsed XML::LibXML::Document.

Note that the constructor will **die()** if the schema does not meed the constraints of the RelaxNG specification.

[validate](#validate)

```
  eval { $rngschema->validate( $doc ); };
    
```

This function allows one to validate a (parsed) document against the given RelaxNG schema. The argument of this function should be an XML::LibXML::Document object. If this function succeeds, it will return 0, otherwise it will **die()** and report the errors found. Because of this **validate()** should be always evaluated.

# [AUTHORS](#AUTHORS)

Matt Sergeant, Christian Glahn, Petr Pajas

# [VERSION](#VERSION)

2.0212

# [COPYRIGHT](#COPYRIGHT)

2001-2007, AxKit.com Ltd.

2002-2006, Christian Glahn.

2006-2009, Petr Pajas.

# [LICENSE](#LICENSE)

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

2026-08-28 perl v5.44.0

---

Document: XML::LibXML::RelaxNG(3pm) from perl-xml-libxml 2.0212-r3 (Chainguard OS)
Source: https://github.com/shlomif/perl-XML-LibXML
