eclipxe / xmlresourceretriever
XSD and XLST resource downloader for local storage
Installs: 81 549
Dependents: 5
Suggesters: 0
Security: 0
Stars: 4
Watchers: 2
Forks: 3
Open Issues: 0
Requires
- php: >=7.3
- ext-dom: *
- ext-fileinfo: *
- ext-filter: *
Requires (Dev)
- phpunit/phpunit: ^9.5
README
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 defaultPhpDownloader
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.