Example #1
0
 function it_renders_into_dom_element(TypesRepositoryInterface $repo, DOMDocument $doc, DOMElement $parent)
 {
     $repo->beADoubleOf('XsdTranslator\\TypesRepositoryInterface');
     $doc = new DOMDocument('1.0', 'UTF-8');
     $parent = $doc->createElement('root');
     $doc->appendChild($parent);
     $route = ['root', 'aaa', 'bbb', 'ccc'];
     $xml = DOMDocument::loadXML("<?xml version='1.0' encoding='UTF-8'?><root>{{ \$root['aaa']['bbb']['ccc'] }}</root>");
     $this->render($repo, $doc, $parent, $route)->shouldBeLike($xml);
 }
Example #2
0
 function it_should_parse_all_types_files_when_has_dependencies(TypesRepositoryInterface $repo)
 {
     $this->beConstructedWith(__DIR__ . "/xsd/example_dep.xsd");
     $repo->beADoubleOf('XsdTranslator\\TypesRepositoryInterface');
     $this->setTypesRepository($repo);
     $repo->registerType('SomeSimpleType', Argument::type('XsdTranslator\\SimpleType'))->shouldBeCalled();
     $repo->registerType('SomeComplexType', Argument::type('XsdTranslator\\ComplexType'))->shouldBeCalled();
     $repo->registerType('SomeAnotherComplexType', Argument::type('XsdTranslator\\ComplexType'))->shouldBeCalled();
     $this->parse();
 }
Example #3
0
 protected function parseComplexTypes(TypesRepositoryInterface $repo)
 {
     foreach ($this->parseXPath('/xs:schema/xs:complexType') as $complex_type) {
         $name = $complex_type->getAttribute('name');
         $elementNodes = $this->parseXPath($complex_type->getNodePath() . '/xs:sequence/xs:element');
         $elements = [];
         foreach ($elementNodes as $element) {
             $elName = $element->getAttribute('name');
             $elType = NULL;
             $elComplexType = $element->getAttribute('type');
             $elSimpleType = $this->parseXPath($element->getNodePath() . '/xs:simpleType/xs:restriction', 'base');
             if ($elComplexType) {
                 $elType = $elComplexType;
             } elseif (count($elSimpleType)) {
                 $elType = $elSimpleType[0];
             } else {
                 $elType = "UnknownType";
             }
             $min_occurs = $element->getAttribute('minOccurs');
             $max_occurs = $element->getAttribute('maxOccurs');
             $elements[$elName] = new Element(['elementName' => $elName, 'type' => Helpers::cleanNamespace($elType), 'min_occurs' => $min_occurs, 'max_occurs' => $max_occurs]);
         }
         $xsd_type = new ComplexType(['name' => $name, 'elements' => $elements]);
         $repo->registerType($name, $xsd_type);
     }
 }