Example #1
0
$dom = new DOMDocument();
$dom->loadXML($fluid->xml());
$dom->formatOutput = true;
$dom->preserveWhiteSpace = false;
// DOMDocument import.
$fluid = fluidify($dom);
echo $fluid->xml();
echo "————————————————————————————————————————————————————————————————————————————————\n";
$simplexml = new SimpleXMLElement($fluid->xml());
// SimpleXMLElement import.
$fluid = fluidify($simplexml);
echo $fluid->xml();
echo "————————————————————————————————————————————————————————————————————————————————\n";
// XML file import.
// $fluid = fluidify('path/to/file.xml');
$other = fluidify($fluid->xml());
$fluid = fluidxml();
$fluid->add($other)->add(['query' => $fluid->query('//meta'), 'dom' => $dom, 'domnodes' => $dom->childNodes, 'simplexml' => $simplexml]);
// Imports a SimpleXMLElement.
/******************
 * XPath Queries. *
*******************/
/*
* XPath queries can be absolute or relative to the context over they are executed.
*/
$eggs = $food->query('//egg');
$fruits = $food->query('//fruit[@price="expensive"]');
echo "We have {$eggs->length()} eggs and {$fruits->length()} expensive fruit.\n";
echo "————————————————————————————————————————————————————————————————————————————————\n";
$book->query('//chapter')->attr('lang', 'en')->query('..')->attr('lang', 'en')->query('../title')->attr('lang', 'en');
/*
Example #2
0
        $actual = $alias->xml();
        $expected = $xml->xml();
        \assert($actual === $expected, __($actual, $expected));
        $options = ['root' => 'root', 'version' => '1.2', 'encoding' => 'UTF-16', 'stylesheet' => 'stylesheet.xsl'];
        $xml = new FluidXml($options);
        $alias = fluidxml($options);
        $actual = $alias->xml();
        $expected = $xml->xml();
        \assert($actual === $expected, __($actual, $expected));
    });
});
describe('fluidify', function () {
    it('should behave like FluidXml::load', function () {
        $doc = '<tag>content</tag>';
        $xml = FluidXml::load($doc);
        $alias = fluidify($doc);
        $actual = $alias->xml();
        $expected = $xml->xml();
        \assert($actual === $expected, __($actual, $expected));
    });
});
describe('fluidns', function () {
    it('should behave like FluidNamespace::__construct', function () {
        $ns = new FluidNamespace('x', 'x.com');
        $alias = fluidns('x', 'x.com');
        $actual = $ns->id();
        $expected = $alias->id();
        \assert($actual === $expected, __($actual, $expected));
        $actual = $ns->uri();
        $expected = $alias->uri();
        \assert($actual === $expected, __($actual, $expected));
Example #3
0
        $options = ['root' => 'root', 'version' => '1.2', 'encoding' => 'UTF-16', 'stylesheet' => 'stylesheet.xsl'];
        $xml = new FluidXml(null, $options);
        $alias = fluidxml(null, $options);
        $actual = $alias->xml();
        $expected = $xml->xml();
        \assert($actual === $expected, __($actual, $expected));
    });
});
describe('fluidify()', function () {
    it('should behave like FluidXml::load()', function () {
        $ds = \DIRECTORY_SEPARATOR;
        $file = __DIR__ . "{$ds}..{$ds}sandbox{$ds}.test_fluidify.xml";
        $doc = "<root>\n" . "  <parent>content</parent>\n" . "</root>";
        \file_put_contents($file, $doc);
        $xml = FluidXml::load($file);
        $alias = fluidify($file);
        \unlink($file);
        $actual = $alias->xml();
        $expected = $xml->xml();
        \assert($actual === $expected, __($actual, $expected));
    });
});
describe('fluidns()', function () {
    it('should behave like FluidNamespace::__construct()', function () {
        $ns = new FluidNamespace('x', 'x.com');
        $alias = fluidns('x', 'x.com');
        $actual = $ns->id();
        $expected = $alias->id();
        \assert($actual === $expected, __($actual, $expected));
        $actual = $ns->uri();
        $expected = $alias->uri();