---
name: "Xacobeo::Document"
section: "3pm"
platform: "linux"
package: "xacobeo"
version: "0.15-3+b2"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/Xacobeo::Document"
---

# Xacobeo::Document(3pm)

An XML document and its related information.

## NAME

Xacobeo::Document - An XML document and its related information.

## SYNOPSIS

```
        use Xacobeo::Document;

        my $document = Xacobeo::Document->new_from_file('file.xml', 'xml');

        my $namespaces = $document->get_namespaces(); # Hashref
        while (my ($uri, $prefix) = each %{ $namespaces }) {
                printf "%-5s: %s\n", $prefix, $uri;
        }

        my $nodes = $document->find('/x:html//x:a[@href]');
        foreach my $node ($nodes->get_nodelist) {
                print "Got node ", $node->name, "\n";
        }

        $document->validate('/x:html//x:a[@href]') or die "Invalid XPath expression";
```

## DESCRIPTION

This class wraps an XML document with its corresponding meta information (namespaces, XPath context, document node, etc).

It inherits from Glib::Object.

## PROPERTIES

The following properties are defined:

### source

The source of the document. In most cases this will be a path or an URI pointing to the document.

### type

The type of document 'xml' or 'html'.

### documentNode

The document's main node (an instance of XML::LibXML::Node).

### xpath

The XPath conext to be used with the document.

### namespaces

An hashref with the namespaces registered in the document.

## METHODS

The package defines the following methods:

### new\_from\_file

Creates a new instance from a file (an URI should also be valid).

Parameters:

```
        $source: the source of the document, this can be a filename or an URI.
        $type:   the type of document: C<xml> or C<html>.
```

### new\_from\_string

Creates a new instance from a string.

Parameters:

```
        $content: the contents of the document.
        $type:    the type of document: C<xml> or C<html>.
```

### empty

Returns an empty document.

### source

The source of the document: most likely a file path or an URI.

### type

The type of document: *xml* or *html*.

### namespaces

Returns the namespaces declared in the document. The namespaces are returned in a hashref where the URIs are used as a key and the prefix as a value.

### documentNode

Returns the document's node (an instance of XML::LibXML::Document).

### xpath

Returns the XPath context (an instance of XML::LibXML::XPathContext) that includes the namespaces declared in the document. This is the context used to execute all XPath queries.

### find

Runs the given XPath query on the document and returns the results. The results could be a node list or a single value like a boolean, a number or a scalar if an expression is passed. This method always return its values in scalar context.

This method croaks if the expression can't be evaluated.

Parameters:

```
        $xpath: the XPath expression to execute.
```

### validate

Validates the syntax of the given XPath query. The syntax is validated within a context that has the same namespaces as the ones defined in the current XML document.

**NOTE**: This method can't validate if undefined functions or variables are used.

Parameters:

```
        $xpath: the XPath expression to validate.
```

### get\_prefixed\_name

Returns the node name by prefixing it with our prefixes in the case where namespaces are used.

## AUTHORS

Emmanuel Rodriguez \<potyl@cpan.org\>.

## COPYRIGHT AND LICENSE

Copyright (C) 2008,2009 by Emmanuel Rodriguez.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.
