eclipxe/xmlresourceretriever

XSD and XLST resource downloader for local storage

v2.0.2 2024-03-08 23:12 UTC

This package is auto-updated.

Last update: 2024-04-09 18:01:01 UTC


README

Source Code Packagist PHP Version Support Latest Version Software License Build Status Scrutinizer Coverage Status Total Downloads

XSD and XLST resource downloader for local storage

The purpose of this library is to download recursively XML resources from the internet to a local storage for further usage. At this moment it only allows Schemas (XSL) and Transformations (XSLT) but is easely extensible implementing the RetrieverInterface interface or extending the AbstractXmlRetriever class.

For every downloaded file it will override its dependences to a relative location, in this way, every dependence should be available to work offline.

You can use the local object PhpDownloader that simply uses copy function to get and store a file from internet. You can also use your own implementation of the DownloaderInterface according to your needs. If you built a configurable and useful downloader class feel free to contribute it to this project.

Installation

Use composer, so please run

composer require eclipxe/xmlresourceretriever

Basic usage

<?php
declare(strict_types=1);
/*
 * This will download the file into
 * /project/cache/www.sat.gob.mx/sitio_internet/cfd/3/cadenaoriginal_3_3/cadenaoriginal_3_3.xslt
 * and all its includes and imports (currently 27 files)
 */
use Eclipxe\XmlResourceRetriever\XsltRetriever;
$xslt = new XsltRetriever('/project/cache');
$local = $xslt->retrieve('http://www.sat.gob.mx/sitio_internet/cfd/3/cadenaoriginal_3_3/cadenaoriginal_3_3.xslt');
echo $local; /* /project/cache/www.sat.gob.mx/sitio_internet/cfd/3/cadenaoriginal_3_3/cadenaoriginal_3_3.xslt */

Retriever more information

These methods apply to XslRetriever and XsltRetriever

  • retrieve($url) Download recursively an url and store it into the retriever base path, it changes the child elements that contains references to other files.
  • download($url) Download an url and store it into the retriever base path. It does not validate the file for xml errors. It does not download dependences.
  • buildPath($url) Return the location of were a file should be stored according to the base path.
  • setDownloader($downloader) Change the default PhpDownloader to a custom implementation.

XsdRetriever search for namespace http://www.w3.org/2001/XMLSchema elements import and include.

XsltRetriever search for namespace http://www.w3.org/1999/XSL/Transform elements import and include.

PHP Support

This library is compatible with the latest PHP supported version and above. Please, try to use the full potential of the language.

Contributing

Contributions are welcome! Please read CONTRIBUTING for details and don't forget to take a look the TODO and CHANGELOG files.

Copyright and License

The Eclipxe\XmlResourceRetriever library is copyright © Carlos C Soto and licensed for use under the MIT License (MIT). Please see LICENSE for more information.