---
name: "Catmandu::Fix::xpath_map"
section: "3pm"
platform: "linux"
package: "libcatmandu-xsd-perl"
version: "0.05-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Catmandu::Fix::xpath_map"
---

# Catmandu::Fix::xpath\_map(3pm)

map values from a XML::LibXML::Element value to a field

## NAME

Catmandu::Fix::xpath\_map - map values from a XML::LibXML::Element value to a field

## SYNOPSIS

```
   #   <mets:dmdSec ID="dmd1">
   #    <mets:mdWrap MDTYPE="MODS">
   #     <mets:xmlData>
   #      <mods:mods xmlns:mods="http://www.loc.gov/mods/v3" ID="mods1" version="3.4">
   #        <mods:titleInfo>
   #         <mods:title>Alabama blues</mods:title>
   #        </mods:titleInfo>
   #      </mods:mods>
   #     </mets:xmlData>
   #    </mets:mdWrap>
   #   </mets:dmdSec>
   # The dmdSec.0.mdWrap.xmlData contains a XML::LibXML::Element
   # Map the value of the 'mods:titleInfo/mods:title' XPath to
   # a new field 'my_new_field'.
   # Optionally provide one or more namespace mappings to use
   xpath_map(
       dmdSec.0.mdWrap.xmlData,
       'mods:titleInfo/mods:title',
       my_new_field,
       -mods:'http://www.loc.gov/mods/v3'
   )
   # Result:
   #
   # 'my_new_field' => 'Alabama blues'
```

## DESCRIPTION

Not all XML fields in an XML Schema can be mapped to a Perl Hash using Catmandu::XSD. Especially \<any\> fields in a schema, which can contain any type of XML are problematic. These fields are mapped into a blessed XML::LibXML::Element object. Using the `"xpath_map"` Fix, on can access these blessed objects and extract data from it using XPaths.

## METHOD

### xpath\_map(xml\_field, xpath, new\_field \[, namespace-prefix:namespace-url \[,...\]\])

Map an XML field at `"xml_field"` to `"new_field"` using an XPath expresssion `"xpath"`.

## SEE ALSO

Catmandu::Fix

## AUTHOR

Patrick Hochstenbach , `"patrick.hochstenbach at ugent.be"`

## LICENSE AND COPYRIGHT

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See \<http://dev.perl.org/licenses/\> for more information.
