Example #1
0
<?php

$source = __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'source';
\set_include_path($source . PATH_SEPARATOR . \get_include_path());
////////////////////////////////////////////////////////////////////////////////
require_once 'FluidXml.php';
/*****************************
 * Creating An XML Document. *
******************************/
$book = new FluidXml('book');
// or
$book = new FluidXml(['root' => 'book']);
// $book is an XML document with 'book' as root node.
// The default options are:
// [ 'root'       => 'doc',      // The root node of the document.
//   'version'    => '1.0',      // The version for the XML header.
//   'encoding'   => 'UTF-8',    // The encoding for the XML header.
//   'stylesheet' => null ];     // An url pointing to an XSL file.
$booksheet = new FluidXml('book', ['stylesheet' => 'http://domain.com/style.xsl']);
// With PHP 7 this is valid too:
// $booksheet = FluidXml::new('book', ['stylesheet' => 'http://domain.com/style.xsl']);
$book->setAttribute('type', 'science')->appendChild(['title' => 'The Theory Of Everything', 'author' => 'S. Hawking']);
// It creates two nodes, each one with some text inside.
echo $book->xml();
// Exports the xml document as a string.
echo "————————————————————————————————————————————————————————————————————————————————\n";
/**********************
 * Context Switching. *
***********************/
/*
* Passing a 'true' boolean value to any method that performs an insertion of a node,
Example #2
0
/**
 * Constructs a new FluidXml instance.
 *
 * ```php
 * $xml = fluidxml();
 * // is the same of
 * $xml = new FluidXml();
 *
 * $xml = fluidxml([
 *
 *   'root'       => 'doc',
 *
 *   'version'    => '1.0',
 *
 *   'encoding'   => 'UTF-8',
 *
 *   'stylesheet' => null ]);
 * ```
 *
 * @param array $arguments Options that influence the construction of the XML document.
 *
 * @return FluidXml A new FluidXml instance.
 */
function fluidify(...$arguments)
{
    return FluidXml::load(...$arguments);
}
Example #3
0
    describe('.attr', function () {
        it('should behave like .setAttribute', function () {
            $xml = new FluidXml();
            $xml->setAttribute('attr1', 'Attr1 Value')->setAttribute(['attr2' => 'Attr2 Value', 'attr3' => 'Attr3 Value'])->appendChild('child', true)->setAttribute('attr4', 'Attr4 Value')->setAttribute(['attr5' => 'Attr5 Value', 'attr6' => 'Attr6 Value']);
            $alias = new FluidXml();
            $alias->attr('attr1', 'Attr1 Value')->attr(['attr2' => 'Attr2 Value', 'attr3' => 'Attr3 Value'])->appendChild('child', true)->attr('attr4', 'Attr4 Value')->attr(['attr5' => 'Attr5 Value', 'attr6' => 'Attr6 Value']);
            $actual = $xml->xml();
            $expected = $alias->xml();
            assert($actual === $expected, __($actual, $expected));
        });
    });
    describe('.text', function () {
        it('should behave like .setText', function () {
            $xml = new FluidXml();
            $xml->setText('Text1')->appendChild('child', true)->setText('Text2');
            $alias = new FluidXml();
            $alias->text('Text1')->appendChild('child', true)->text('Text2');
            $actual = $xml->xml();
            $expected = $alias->xml();
            assert($actual === $expected, __($actual, $expected));
        });
    });
});
describe('FluidContext', function () {
    it('should be iterable returning the represented DOMNode objects', function () {
        $xml = new FluidXml();
        $cx = $xml->appendChild(['head', 'body'], true);
        $actual = $cx;
        assert_is_a($actual, \Iterator::class);
        $representation = [];
        foreach ($cx as $k => $v) {