eXist-db Client for Laravel 5 ================================= A Laravel 5 package that abstracts out the XML RPC calls for [eXist-db](http://exist-db.org/exist/apps/homepage/index.html). Based on [php-eXist-db-Client](https://github.com/CuAnnan/php-eXist-db-Client). ## Requirements: - Laravel 5 - PHP 5.5 or PHP 7 - PEAR 1.10 ```bash sudo apt-get install php-pear sudo pear channel-update pear.php.net ``` - PHP XSLT extension ```bash sudo apt-get install php5-xsl ``` ## Installing ####1. Add the service provider to your config/app.php: BCDH\ExistDbClient\ExistDbServiceProvider::class ####2. Publish your configuration file: php artisan vendor:publish ####3. Edit your connection credentials in `config/exist-db.php` [ 'protocol' => "http", 'user' => "admin", 'password' => "admin", 'host' => "localhost", 'port' => 8080, 'path' => "/exist/xmlrpc/", ] ## Usage ```php use BCDH\ExistDbClient\ExistDbClient; $connection = new ExistDbClient(); $stmt = $connection->prepareQuery('for $someNode in collection("/SomeCollection")/someNodeName[./somePredicateAttribute=$someValueToBeBound] return $someNode'); $stmt->setSimpleXMLReturnType(); $stmt->bindVariable('someValueToBeBound', '5'); $resultPool = $stmt->execute(); $result = $resultPool->getAllResults(); foreach($result as $xml) { var_dump($xml->somePredicateAttribute); } ``` ## Return types - Query::setStringReturnType() result is instance of [DOMElement](http://php.net/manual/en/class.domelement.php) - Query::setSimpleXMLReturnType() result is instance of [SimpleXMLElement](http://php.net/manual/en/class.simplexmlelement.php) - Query::setDomXMLReturnType() result is string #### Get result field - DomXmlResult ```php $document = $result->getDocument(); $title = $doc->getElementsByTagName('TITLE')->item(0)->nodeValue; ``` - SimpleXML ```php $document = $result->getDocument(); $title = $doc->TITLE; ``` #### Get result attribute - DomXmlResult ```php $document = $result->getDocument(); $isFavorite = $doc->hasAttribute('favourite'); ``` - SimpleXML ```php $document = $result->getDocument(); $attributes = $document->attributes(); $isFavorite = isset($attributes['favourite']); ``` ## XLS transformations - Single result (DomXmlResult|SimpleXmlResult) ```php $resultPool = $stmt->execute(); $results = $resultPool->getAllResults(); $res = $results[0]; $html = $res->transform(__DIR__.'/xml/cd_catalog_simplified.xsl'); ``` - ResultSet ```php $resultPool = $stmt->execute(); $results = $resultPool->getAllResults(); $rootTagName = 'catalog'; $html = $resultPool->transform($rootTagName, $results, __DIR__.'/xml/cd_catalog_simplified.xsl'); ```