RomaricDrigon\MetaYaml\XsdNodeGenerator\XsdPrototypeNodeGenerator::build PHP Метод

build() публичный Метод

public build ( $name, $node, XMLWriter &$writer, $under_root )
$writer XMLWriter
    public function build($name, $node, \XMLWriter &$writer, $under_root)
    {
        $writer->startElementNs('xsd', 'element', null);
        $writer->writeAttribute('name', $name);
        $this->addRequired($node, $writer, $under_root);
        // check min and max_items attributes
        $min = isset($node[$this->xsd_generator->getFullName('min_items')]) ? $node[$this->xsd_generator->getFullName('min_items')] : '0';
        $max = isset($node[$this->xsd_generator->getFullName('max_items')]) ? $node[$this->xsd_generator->getFullName('max_items')] : '200';
        // complexType
        // we can't validate the actual type of children nodes
        $writer->startElementNs('xsd', 'complexType', null);
        $writer->startElementNs('xsd', 'sequence', null);
        $writer->startElementNs('xsd', 'any', null);
        $writer->writeAttribute('minOccurs', $min);
        $writer->writeAttribute('maxOccurs', $max);
        $writer->endElement();
        $writer->endElement();
        $writer->endElement();
        $writer->endElement();
    }

Usage Example

 public function testBase()
 {
     $this->if($xsd_generator = new XsdGenerator())->and($object = new testedClass($xsd_generator))->and($writer = new \XMLWriter())->and($writer->openMemory())->then->variable($object->build('test', array('prototype' => array('_type' => 'text'), '_min_items' => 1, '_max_items' => 20), $writer, false))->isNull()->string($writer->outputMemory())->isEqualTo('<xsd:element name="test" minOccurs="0"><xsd:complexType><xsd:sequence>' . '<xsd:any minOccurs="1" maxOccurs="20"/></xsd:sequence></xsd:complexType></xsd:element>');
 }
XsdPrototypeNodeGenerator