Mercurial > hg > isophonics-drupal-site
diff vendor/consolidation/output-formatters/src/StructuredData/Xml/XmlSchemaInterface.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/consolidation/output-formatters/src/StructuredData/Xml/XmlSchemaInterface.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,73 @@ +<?php + +namespace Consolidation\OutputFormatters\StructuredData\Xml; + +/** + * When using arrays, we could represent XML data in a number of + * different ways. + * + * For example, given the following XML data strucutre: + * + * <document id="1" name="doc"> + * <foobars> + * <foobar id="123"> + * <name>blah</name> + * <widgets> + * <widget> + * <foo>a</foo> + * <bar>b</bar> + * <baz>c</baz> + * </widget> + * </widgets> + * </foobar> + * </foobars> + * </document> + * + * This could be: + * + * [ + * 'id' => 1, + * 'name' => 'doc', + * 'foobars' => + * [ + * [ + * 'id' => '123', + * 'name' => 'blah', + * 'widgets' => + * [ + * [ + * 'foo' => 'a', + * 'bar' => 'b', + * 'baz' => 'c', + * ] + * ], + * ], + * ] + * ] + * + * The challenge is more in going from an array back to the more + * structured xml format. Note that any given key => string mapping + * could represent either an attribute, or a simple XML element + * containing only a string value. In general, we do *not* want to add + * extra layers of nesting in the data structure to disambiguate between + * these kinds of data, as we want the source data to render cleanly + * into other formats, e.g. yaml, json, et. al., and we do not want to + * force every data provider to have to consider the optimal xml schema + * for their data. + * + * Our strategy, therefore, is to expect clients that wish to provide + * a very specific xml representation to return a DOMDocument, and, + * for other data structures where xml is a secondary concern, then we + * will use some default heuristics to convert from arrays to xml. + */ +interface XmlSchemaInterface +{ + /** + * Convert data to a format suitable for use in a list. + * By default, the array values will be used. Implement + * ListDataInterface to use some other criteria (e.g. array keys). + * + * @return \DOMDocument + */ + public function arrayToXml($structuredData); +}