--- /dev/null
+--TEST--
+SOAP XML Schema 1: simpleType/restriction
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <restriction base="xsd:int"/>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+int(123)
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 2: simpleType/restriction (reference to type)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType2">
+ <restriction base="xsd:int"/>
+ </simpleType>
+ <simpleType name="testType">
+ <restriction base="tns:testType2"/>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+int(123)
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 3: simpleType/restriction (reference to type, that is not defined yet)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <restriction base="tns:testType2"/>
+ </simpleType>
+ <simpleType name="testType2">
+ <restriction base="xsd:int"/>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+int(123)
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 4: simpleType/restriction (reference to undefined type)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <restriction base="tns:testType2"/>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123.5</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(5) "123.5"
+ok
\ No newline at end of file
--- /dev/null
+--TEST--
+SOAP XML Schema 5: simpleType/restriction (inline type)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <restriction>
+ <simpleType name="testType2">
+ <restriction base="xsd:int"/>
+ </simpleType>
+ </restriction>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+int(123)
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 6: simpleType/restriction (referenced by ellement)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <restriction>
+ <simpleType name="testType2">
+ <restriction base="xsd:int"/>
+ </simpleType>
+ </restriction>
+ </simpleType>
+ <element name="testElement" type="tns:testType"/>
+EOF;
+test_schema($schema,'element="tns:testElement"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+int(123)
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 7: simpleType/restriction (referenced by ellement)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <element name="testElement" type="tns:testType"/>
+ <simpleType name="testType">
+ <restriction>
+ <simpleType name="testType2">
+ <restriction base="xsd:int"/>
+ </simpleType>
+ </restriction>
+ </simpleType>
+EOF;
+test_schema($schema,'element="tns:testElement"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+int(123)
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 8: simpleType/restriction (anonymous, inside an ellement)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+<element name="testElement">
+ <simpleType>
+ <restriction>
+ <simpleType name="testType2">
+ <restriction base="xsd:int"/>
+ </simpleType>
+ </restriction>
+ </simpleType>
+</element>
+EOF;
+test_schema($schema,'element="tns:testElement"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testElement">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+int(123)
+ok
+
--- /dev/null
+--TEST--
+SOAP XML Schema 9: simpleType/list (as string)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <list itemType="token"/>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',"one two");
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">one two</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(7) "one two"
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 10: simpleType/list (as array)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <list itemType="token"/>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',array("one","two"));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">one two</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(7) "one two"
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 11: simpleType/list (inline type) (as string)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <list>
+ <simpleType>
+ <restriction base="int"/>
+ </simpleType>
+ </list>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',"123 456.7");
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123 456</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(7) "123 456"
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 12: simpleType/list (inline type) (as array)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <list>
+ <simpleType>
+ <restriction base="int"/>
+ </simpleType>
+ </list>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,456.7));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123 456</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(7) "123 456"
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 13: simpleType/union
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <union memberTypes="string int float"/>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',"str");
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">str</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(3) "str"
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 14: simpleType/union
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <union memberTypes="string int float"/>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123.5</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(5) "123.5"
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 15: simpleType/union (inline type)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <union>
+ <simpleType>
+ <restriction base="string"/>
+ </simpleType>
+ <simpleType>
+ <restriction base="int"/>
+ </simpleType>
+ <simpleType>
+ <restriction base="float"/>
+ </simpleType>
+ </union>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',"str");
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">str</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(3) "str"
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 16: simpleType/union (inline type)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <union>
+ <simpleType>
+ <restriction base="string"/>
+ </simpleType>
+ <simpleType>
+ <restriction base="int"/>
+ </simpleType>
+ <simpleType>
+ <restriction base="float"/>
+ </simpleType>
+ </union>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123.5</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(5) "123.5"
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 17: union with list
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <union>
+ <simpleType>
+ <restriction base="float"/>
+ </simpleType>
+ <simpleType>
+ <list itemType="int"/>
+ </simpleType>
+ </union>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123.5</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(5) "123.5"
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 18: union with list
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <union>
+ <simpleType>
+ <restriction base="float"/>
+ </simpleType>
+ <simpleType>
+ <list itemType="int"/>
+ </simpleType>
+ </union>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',"123.5");
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123.5</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(5) "123.5"
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 19: union with list
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <union>
+ <simpleType>
+ <restriction base="float"/>
+ </simpleType>
+ <simpleType>
+ <list itemType="int"/>
+ </simpleType>
+ </union>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',"123.5 456.7");
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123.5 456.7</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(11) "123.5 456.7"
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 20: union with list
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <union>
+ <simpleType>
+ <restriction base="float"/>
+ </simpleType>
+ <simpleType>
+ <list itemType="int"/>
+ </simpleType>
+ </union>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123.5,456.7));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123.5 456.7</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(11) "123.5 456.7"
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 21: list of unions
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <list>
+ <simpleType>
+ <union memberTypes="int float str"/>
+ </simpleType>
+ </list>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',"123 123.5 456.7 str");
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123 123.5 456.7 str</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(19) "123 123.5 456.7 str"
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 22: list of unions
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <simpleType name="testType">
+ <list>
+ <simpleType>
+ <union memberTypes="int float str"/>
+ </simpleType>
+ </list>
+ </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5,'str'));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123 123.5 str</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(13) "123 123.5 str"
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 23: SOAP 1.1 Array
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <complexContent>
+ <restriction base="SOAP-ENC:Array">
+ <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="int[]"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam SOAP-ENC:arrayType="xsd:int[2]" xsi:type="ns1:testType"><item xsi:type="xsd:int">123</item><item xsi:type="xsd:int">123</item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+ [0]=>
+ int(123)
+ [1]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 24: SOAP 1.1 Array (second way)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <complexContent>
+ <restriction base="SOAP-ENC:Array">
+ <all>
+ <element name="x_item" type="int" maxOccurs="unbounded"/>
+ </all>
+ </restriction>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam SOAP-ENC:arrayType="xsd:int[2]" xsi:type="ns1:testType"><x_item xsi:type="xsd:int">123</x_item><x_item xsi:type="xsd:int">123</x_item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+ [0]=>
+ int(123)
+ [1]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 25: SOAP 1.2 Array
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <complexContent>
+ <restriction base="enc12:Array" xmlns:enc12="http://www.w3.org/2003/05/soap-encoding">
+ <attribute ref="enc12:itemType" wsdl:itemType="int"/>
+ <attribute ref="enc12:arraySize" wsdl:arraySize="*"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam SOAP-ENC:arrayType="xsd:int[2]" xsi:type="ns1:testType"><item xsi:type="xsd:int">123</item><item xsi:type="xsd:int">123</item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+ [0]=>
+ int(123)
+ [1]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 26: SOAP 1.2 Array (second way)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <complexContent>
+ <restriction base="enc12:Array" xmlns:enc12="http://www.w3.org/2003/05/soap-encoding">
+ <all>
+ <element name="x_item" type="int" maxOccurs="unbounded"/>
+ </all>
+ </restriction>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam SOAP-ENC:arrayType="xsd:int[2]" xsi:type="ns1:testType"><x_item xsi:type="xsd:int">123</x_item><x_item xsi:type="xsd:int">123</x_item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+ [0]=>
+ int(123)
+ [1]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 27: SOAP 1.1 Multidimensional array
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <complexContent>
+ <restriction base="SOAP-ENC:Array">
+ <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="int[,]"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(array(123),array(123.5)));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam SOAP-ENC:arrayType="xsd:int[2,1]" xsi:type="ns1:testType"><item xsi:type="xsd:int">123</item><item xsi:type="xsd:int">123</item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+ [0]=>
+ array(1) {
+ [0]=>
+ int(123)
+ }
+ [1]=>
+ array(1) {
+ [0]=>
+ int(123)
+ }
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 28: SOAP 1.2 Multidimensional array
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <complexContent>
+ <restriction base="enc12:Array" xmlns:enc12="http://www.w3.org/2003/05/soap-encoding">
+ <attribute ref="enc12:itemType" wsdl:itemType="int"/>
+ <attribute ref="enc12:arraySize" wsdl:arraySize="* 1"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(array(123),array(123.5)));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam SOAP-ENC:arrayType="xsd:int[2,1]" xsi:type="ns1:testType"><item xsi:type="xsd:int">123</item><item xsi:type="xsd:int">123</item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+ [0]=>
+ array(1) {
+ [0]=>
+ int(123)
+ }
+ [1]=>
+ array(1) {
+ [0]=>
+ int(123)
+ }
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 29: SOAP 1.2 Multidimensional array (second way)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <complexContent>
+ <restriction base="enc12:Array" xmlns:enc12="http://www.w3.org/2003/05/soap-encoding">
+ <all>
+ <element name="x_item" type="int" maxOccurs="unbounded"/>
+ </all>
+ <attribute ref="enc12:arraySize" wsdl:arraySize="* 1"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(array(123),array(123.5)));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam SOAP-ENC:arrayType="xsd:int[2,1]" xsi:type="ns1:testType"><x_item xsi:type="xsd:int">123</x_item><x_item xsi:type="xsd:int">123</x_item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+ [0]=>
+ array(1) {
+ [0]=>
+ int(123)
+ }
+ [1]=>
+ array(1) {
+ [0]=>
+ int(123)
+ }
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 30: Structure (sequence)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <sequence>
+ <element name="int" type="int"/>
+ <element name="str" type="string"/>
+ </sequence>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str","int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><str xsi:type="xsd:string">str</str></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["int"]=>
+ int(123)
+ ["str"]=>
+ string(3) "str"
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 31: Structure (all)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <all>
+ <element name="int" type="int"/>
+ <element name="str" type="string"/>
+ </all>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str","int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><str xsi:type="xsd:string">str</str></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["int"]=>
+ int(123)
+ ["str"]=>
+ string(3) "str"
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 32: Structure (choice)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <choice>
+ <element name="int" type="int"/>
+ <element name="str" type="string"/>
+ </choice>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (1) {
+ ["int"]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 33: Nested complex types
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType2">
+ <sequence>
+ <element name="int" type="int"/>
+ </sequence>
+ </complexType>
+ <complexType name="testType">
+ <sequence>
+ <element name="int" type="int"/>
+ <element name="nest" type="tns:testType2"/>
+ </sequence>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("int"=>123.5,"nest"=>array("int"=>123.5)));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><nest xsi:type="ns1:testType2"><int xsi:type="xsd:int">123</int></nest></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["int"]=>
+ int(123)
+ ["nest"]=>
+ object(stdClass)#6 (1) {
+ ["int"]=>
+ int(123)
+ }
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 34: Nested complex types (element ref)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <element name="testType2" type="tns:testType2"/>
+ <complexType name="testType2">
+ <sequence>
+ <element name="int" type="int"/>
+ </sequence>
+ </complexType>
+ <complexType name="testType">
+ <sequence>
+ <element name="int" type="int"/>
+ <element ref="tns:testType2"/>
+ </sequence>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("int"=>123.5,"testType2"=>array("int"=>123.5)));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><testType2 xsi:type="ns1:testType2"><int xsi:type="xsd:int">123</int></testType2></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["int"]=>
+ int(123)
+ ["testType2"]=>
+ object(stdClass)#6 (1) {
+ ["int"]=>
+ int(123)
+ }
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 35: Nested complex types (element ref + anonymous type)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <element name="testType2">
+ <complexType>
+ <sequence>
+ <element name="int" type="int"/>
+ </sequence>
+ </complexType>
+ </element>
+ <complexType name="testType">
+ <sequence>
+ <element name="int" type="int"/>
+ <element ref="tns:testType2"/>
+ </sequence>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("int"=>123.5,"testType2"=>array("int"=>123.5)));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><testType2 xsi:type="ns1:testType2"><int xsi:type="xsd:int">123</int></testType2></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["int"]=>
+ int(123)
+ ["testType2"]=>
+ object(stdClass)#6 (1) {
+ ["int"]=>
+ int(123)
+ }
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 36: Nested complex types (inline)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <sequence>
+ <element name="int" type="int"/>
+ <element name="testType2">
+ <complexType>
+ <sequence>
+ <element name="int" type="int"/>
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("int"=>123.5,"testType2"=>array("int"=>123.5)));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><testType2 xsi:type="ns1:testType2"><int xsi:type="xsd:int">123</int></testType2></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["int"]=>
+ int(123)
+ ["testType2"]=>
+ object(stdClass)#6 (1) {
+ ["int"]=>
+ int(123)
+ }
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 37: Structure with attributes
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <sequence>
+ <element name="str" type="string"/>
+ </sequence>
+ <attribute name="int" type="int"/>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str","int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam int="123" xsi:type="ns1:testType"><str xsi:type="xsd:string">str</str></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["str"]=>
+ string(3) "str"
+ ["int"]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 38: Structure with attributes (ref)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <sequence>
+ <element name="str" type="string"/>
+ </sequence>
+ <attribute ref="tns:int"/>
+ </complexType>
+ <attribute name="int" type="int"/>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str","int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam int="123" xsi:type="ns1:testType"><str xsi:type="xsd:string">str</str></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["str"]=>
+ string(3) "str"
+ ["int"]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 39: Structure with attributes (attributeGroup)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <sequence>
+ <element name="str" type="string"/>
+ </sequence>
+ <attributeGroup ref="tns:intGroup"/>
+ </complexType>
+ <attributeGroup name="intGroup">
+ <attribute name="int" type="int"/>
+ </attributeGroup>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str","int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam int="123" xsi:type="ns1:testType"><str xsi:type="xsd:string">str</str></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["str"]=>
+ string(3) "str"
+ ["int"]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 40: Structure with attributes (inline types)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <sequence>
+ <element name="str" type="string"/>
+ </sequence>
+ <attribute name="int">
+ <simpleType>
+ <restriction base="int"/>
+ </simpleType>
+ </attribute>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str","int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam int="123" xsi:type="ns1:testType"><str xsi:type="xsd:string">str</str></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["str"]=>
+ string(3) "str"
+ ["int"]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 41: Structure (group)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <group ref="tns:testGroup"/>
+ </complexType>
+ <group name="testGroup">
+ <sequence>
+ <element name="int" type="int"/>
+ <element name="str" type="string"/>
+ </sequence>
+ </group>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str","int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><str xsi:type="xsd:string">str</str></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["int"]=>
+ int(123)
+ ["str"]=>
+ string(3) "str"
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 42: Extension of simple type
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <simpleContent>
+ <extension base="int">
+ <attribute name="int" type="int"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("_"=>123.5,"int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType" int="123">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["_"]=>
+ int(123)
+ ["int"]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 43: Extension of simple type (2)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType2">
+ <simpleContent>
+ <extension base="int">
+ <attribute name="int" type="int"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ <complexType name="testType">
+ <simpleContent>
+ <extension base="tns:testType2">
+ <attribute name="int2" type="int"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("_"=>123.5,"int"=>123.5,"int2"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType" int="123" int2="123">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (3) {
+ ["_"]=>
+ int(123)
+ ["int"]=>
+ int(123)
+ ["int2"]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 44: Restriction of simple type
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <simpleContent>
+ <restriction base="int">
+ <attribute name="int" type="int"/>
+ </restriction>
+ </simpleContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("_"=>123.5,"int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType" int="123">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["_"]=>
+ int(123)
+ ["int"]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 45: Restriction of simple type (2)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType2">
+ <simpleContent>
+ <extension base="int">
+ <attribute name="int" type="int"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ <complexType name="testType">
+ <simpleContent>
+ <restriction base="tns:testType2">
+ <attribute name="int2" type="int"/>
+ </restriction>
+ </simpleContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("_"=>123.5,"int"=>123.5,"int2"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType" int2="123">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["_"]=>
+ int(123)
+ ["int2"]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 46: Extension of complex type
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType2">
+ <simpleContent>
+ <extension base="int">
+ <attribute name="int" type="int"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ <complexType name="testType">
+ <complexContent>
+ <extension base="tns:testType2">
+ <attribute name="int2" type="int"/>
+ </extension>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("_"=>123.5,"int"=>123.5,"int2"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType" int="123" int2="123">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (3) {
+ ["_"]=>
+ int(123)
+ ["int"]=>
+ int(123)
+ ["int2"]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 47: Extension of complex type (2)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType2">
+ <sequence>
+ <element name="int" type="int"/>
+ </sequence>
+ </complexType>
+ <complexType name="testType">
+ <complexContent>
+ <extension base="tns:testType2">
+ <attribute name="int2" type="int"/>
+ </extension>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("_"=>123.5,"int"=>123.5,"int2"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType" int2="123"><int xsi:type="xsd:int">123</int></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["int"]=>
+ int(123)
+ ["int2"]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 48: Restriction of complex type
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType2">
+ <simpleContent>
+ <extension base="int">
+ <attribute name="int" type="int"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ <complexType name="testType">
+ <complexContent>
+ <restriction base="tns:testType2">
+ <attribute name="int2" type="int"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("_"=>123.5,"int"=>123.5,"int2"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType" int2="123">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["_"]=>
+ int(123)
+ ["int2"]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 49: Restriction of complex type (2)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType2">
+ <sequence>
+ <element name="int" type="int"/>
+ </sequence>
+ </complexType>
+ <complexType name="testType">
+ <complexContent>
+ <restriction base="tns:testType2">
+ <sequence>
+ <element name="int2" type="int"/>
+ </sequence>
+ </restriction>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("_"=>123.5,"int"=>123.5,"int2"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int2 xsi:type="xsd:int">123</int2></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (1) {
+ ["int2"]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 50: Array in complex type (maxOccurs > 1, one value)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <sequence>
+ <element name="int" type="int"/>
+ <element name="int2" type="int" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("int"=>123.5,"int2"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><int2 xsi:type="xsd:int">123</int2></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["int"]=>
+ int(123)
+ ["int2"]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 51: Array in complex type (maxOccurs > 1, array)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <sequence>
+ <element name="int" type="int"/>
+ <element name="int2" type="int" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("int"=>123.5,"int2"=>array(123.5,456.7)));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><int2 xsi:type="xsd:int">123</int2><int2 xsi:type="xsd:int">456</int2></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["int"]=>
+ int(123)
+ ["int2"]=>
+ array(2) {
+ [0]=>
+ int(123)
+ [1]=>
+ int(456)
+ }
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 52: Array in complex type (maxOccurs > 1, array with one value)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <sequence>
+ <element name="int" type="int"/>
+ <element name="int2" type="int" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("int"=>123.5,"int2"=>array(123.5)));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><int2 xsi:type="xsd:int">123</int2></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["int"]=>
+ int(123)
+ ["int2"]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 52: Array in complex type (maxOccurs > 1, empty array)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <sequence>
+ <element name="int" type="int"/>
+ <element name="int2" type="int" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("int"=>123.5,"int2"=>array()));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (1) {
+ ["int"]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 54: Apache Map
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = '';
+test_schema($schema,'type="apache:Map" xmlns:apache="http://xml.apache.org/xml-soap"',array('a'=>123,'b'=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="http://xml.apache.org/xml-soap" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns2:Map"><item><key xsi:type="xsd:string">a</key><value xsi:type="xsd:int">123</value></item><item><key xsi:type="xsd:string">b</key><value xsi:type="xsd:float">123.5</value></item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+ ["a"]=>
+ int(123)
+ ["b"]=>
+ float(123.5)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 55: Apache Map (extension)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <complexContent>
+ <extension base="apache:Map" xmlns:apache="http://xml.apache.org/xml-soap">
+ </extension>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="testType"',array('a'=>123,'b'=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="http://xml.apache.org/xml-soap" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns2:Map"><item><key xsi:type="xsd:string">a</key><value xsi:type="xsd:int">123</value></item><item><key xsi:type="xsd:string">b</key><value xsi:type="xsd:float">123.5</value></item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+ ["a"]=>
+ int(123)
+ ["b"]=>
+ float(123.5)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 56: SOAP 1.1 Array (literal encoding)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <complexContent>
+ <restriction base="SOAP-ENC:Array">
+ <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="int[]"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5),'rpc','literal');
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body><ns1:test><testParam><xsd:int>123</xsd:int><xsd:int>123</xsd:int></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+ [0]=>
+ int(123)
+ [1]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 57: SOAP 1.1 Array (second way, literal encoding)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <complexContent>
+ <restriction base="SOAP-ENC:Array">
+ <all>
+ <element name="x_item" type="int" maxOccurs="unbounded"/>
+ </all>
+ </restriction>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5),'rpc','literal');
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body><ns1:test><testParam><x_item>123</x_item><x_item>123</x_item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+ [0]=>
+ int(123)
+ [1]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 58: SOAP 1.2 Array (literal encoding)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <complexContent>
+ <restriction base="enc12:Array" xmlns:enc12="http://www.w3.org/2003/05/soap-encoding">
+ <attribute ref="enc12:itemType" wsdl:itemType="int"/>
+ <attribute ref="enc12:arraySize" wsdl:arraySize="*"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5),'rpc','literal');
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body><ns1:test><testParam><xsd:int>123</xsd:int><xsd:int>123</xsd:int></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+ [0]=>
+ int(123)
+ [1]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 59: SOAP 1.2 Array (second way, literal encoding)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <complexContent>
+ <restriction base="enc12:Array" xmlns:enc12="http://www.w3.org/2003/05/soap-encoding">
+ <all>
+ <element name="x_item" type="int" maxOccurs="unbounded"/>
+ </all>
+ </restriction>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5),'rpc','literal');
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body><ns1:test><testParam><x_item>123</x_item><x_item>123</x_item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+ [0]=>
+ int(123)
+ [1]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 60: SOAP 1.2 Multidimensional array (literal encoding)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <complexContent>
+ <restriction base="enc12:Array" xmlns:enc12="http://www.w3.org/2003/05/soap-encoding">
+ <attribute ref="enc12:itemType" wsdl:itemType="int"/>
+ <attribute ref="enc12:arraySize" wsdl:arraySize="* 1"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(array(123),array(123.5)),'rpc','literal');
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body><ns1:test><testParam><xsd:int>123</xsd:int><xsd:int>123</xsd:int></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+ [0]=>
+ array(1) {
+ [0]=>
+ int(123)
+ }
+ [1]=>
+ array(1) {
+ [0]=>
+ int(123)
+ }
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 61: SOAP 1.2 Multidimensional array (second way, literal encoding)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <complexContent>
+ <restriction base="enc12:Array" xmlns:enc12="http://www.w3.org/2003/05/soap-encoding">
+ <all>
+ <element name="x_item" type="int" maxOccurs="unbounded"/>
+ </all>
+ <attribute ref="enc12:arraySize" wsdl:arraySize="* 1"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(array(123),array(123.5)),'rpc','literal');
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body><ns1:test><testParam><x_item>123</x_item><x_item>123</x_item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+ [0]=>
+ array(1) {
+ [0]=>
+ int(123)
+ }
+ [1]=>
+ array(1) {
+ [0]=>
+ int(123)
+ }
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 62: NULL with attributes
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <simpleContent>
+ <restriction base="int">
+ <attribute name="int" type="int"/>
+ </restriction>
+ </simpleContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("_"=>NULL,"int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:nil="1" int="123" xsi:type="ns1:testType"/></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["_"]=>
+ NULL
+ ["int"]=>
+ int(123)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 63: standard unsignedLong type
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = '';
+test_schema($schema,'type="xsd:unsignedLong"',0xffffffff);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="xsd:unsignedLong">4294967295</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+float(4294967295)
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 64: standard date/time types
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <sequence>
+ <element name="dateTime" type="dateTime"/>
+ <element name="time" type="time"/>
+ <element name="date" type="date"/>
+ <element name="gYearMonth" type="gYearMonth"/>
+ <element name="gYear" type="gYear"/>
+ <element name="gMonthDay" type="gMonthDay"/>
+ <element name="gDay" type="gDay"/>
+ <element name="gMonth" type="gMonth"/>
+ </sequence>
+ </complexType>
+EOF;
+$date = gmmktime(1,2,3,4,5,1976);
+putenv('TZ=GMT');
+test_schema($schema,'type="tns:testType"',array(
+ 'dateTime' => $date,
+ 'time' => $date,
+ 'date' => $date,
+ 'gYearMonth' => $date,
+ 'gYear' => $date,
+ 'gMonthDay' => $date,
+ 'gDay' => $date,
+ 'gMonth' => $date
+));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><dateTime xsi:type="xsd:dateTime">1976-04-05T01:02:03Z</dateTime><time xsi:type="xsd:time">01:02:03Z</time><date xsi:type="xsd:date">1976-04-05Z</date><gYearMonth xsi:type="xsd:gYearMonth">1976-04Z</gYearMonth><gYear xsi:type="xsd:gYear">1976Z</gYear><gMonthDay xsi:type="xsd:gMonthDay">--04-05Z</gMonthDay><gDay xsi:type="xsd:gDay">---05Z</gDay><gMonth xsi:type="xsd:gMonth">--04--Z</gMonth></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#4 (8) {
+ ["dateTime"]=>
+ string(20) "1976-04-05T01:02:03Z"
+ ["time"]=>
+ string(9) "01:02:03Z"
+ ["date"]=>
+ string(11) "1976-04-05Z"
+ ["gYearMonth"]=>
+ string(8) "1976-04Z"
+ ["gYear"]=>
+ string(5) "1976Z"
+ ["gMonthDay"]=>
+ string(8) "--04-05Z"
+ ["gDay"]=>
+ string(6) "---05Z"
+ ["gMonth"]=>
+ string(7) "--04--Z"
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 65: Attribute with default value
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <attribute name="str" type="string"/>
+ <attribute name="int" type="int" default="5"/>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str"));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam str="str" xsi:type="ns1:testType"/></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["str"]=>
+ string(3) "str"
+ ["int"]=>
+ int(5)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 66: Attribute with fixed value (1)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <attribute name="str" type="string"/>
+ <attribute name="int" type="int" fixed="5"/>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str"));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam str="str" xsi:type="ns1:testType"/></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (1) {
+ ["str"]=>
+ string(3) "str"
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 67: Attribute with fixed value (2)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <attribute name="str" type="string"/>
+ <attribute name="int" type="int" fixed="5"/>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str","int"=>5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam str="str" int="5" xsi:type="ns1:testType"/></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["str"]=>
+ string(3) "str"
+ ["int"]=>
+ int(5)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 68: Attribute with fixed value (3)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <attribute name="str" type="string"/>
+ <attribute name="int" type="int" fixed="5"/>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str","int"=>4));
+echo "ok";
+?>
+--EXPECTF--
+Fatal error: Attribute 'int' has fixed value '5' (value '4' is not allowed) in %stest_schema.inc on line %d
--- /dev/null
+--TEST--
+SOAP XML Schema 69: Attribute with default value (reference)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <attribute name="str" type="string"/>
+ <attribute ref="tns:int"/>
+ </complexType>
+ <attribute name="int" type="int" default="5"/>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str"));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam str="str" xsi:type="ns1:testType"/></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["str"]=>
+ string(3) "str"
+ ["int"]=>
+ int(5)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 70: Attribute with default value (attributeGroup)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <attribute name="str" type="string"/>
+ <attributeGroup ref="tns:int_group"/>
+ </complexType>
+ <attributeGroup name="int_group">
+ <attribute name="int" type="int" default="5"/>
+ </attributeGroup>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str"));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam str="str" xsi:type="ns1:testType"/></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+ ["str"]=>
+ string(3) "str"
+ ["int"]=>
+ int(5)
+}
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 71: SOAP 1.1 Array (document style)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <complexType name="testType">
+ <complexContent>
+ <restriction base="SOAP-ENC:Array">
+ <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="int[]"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5),'document','literal');
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body><testParam><xsd:int>123</xsd:int><xsd:int>123</xsd:int></testParam></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 72: SOAP 1.1 Array (document style, element with inline type)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <element name="testElement">
+ <complexType name="testType">
+ <complexContent>
+ <restriction base="SOAP-ENC:Array">
+ <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="int[]"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+ </element>
+EOF;
+test_schema($schema,'element="tns:testElement"',array(123,123.5),'document','literal');
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://test-uri/"><SOAP-ENV:Body><ns1:testElement><xsd:int>123</xsd:int><xsd:int>123</xsd:int></ns1:testElement></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
--- /dev/null
+--TEST--
+SOAP XML Schema 73: SOAP 1.1 Array (document style, element with type ref)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+ <element name="testElement" type="tns:testType"/>
+ <complexType name="testType">
+ <complexContent>
+ <restriction base="SOAP-ENC:Array">
+ <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="int[]"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+EOF;
+test_schema($schema,'element="tns:testElement"',array(123,123.5),'document','literal');
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://test-uri/"><SOAP-ENV:Body><ns1:testElement><xsd:int>123</xsd:int><xsd:int>123</xsd:int></ns1:testElement></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
--- /dev/null
+<?php
+ if (!extension_loaded('soap')) die('skip soap extension not available');
+?>
--- /dev/null
+<?php
+$val = null;
+
+function test($input) {
+ global $val;
+ $val = $input;
+}
+
+function test_schema($schema,$type,$param,$style="rpc",$use="encoded") {
+ global $HTTP_RAW_POST_DATA, $val;
+$wsdl = <<<EOF
+<definitions name="InteropTest"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
+ xmlns:tns="http://test-uri/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ targetNamespace="http://test-uri/">
+ <types>
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://test-uri/">
+ <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
+ <xsd:import namespace="http://schemas.xmlsoap.org/wsdl/" />
+ $schema
+ </schema>
+ </types>
+ <message name="testMessage">
+ <part name="testParam" $type/>
+ </message>
+ <portType name="testPortType">
+ <operation name="test">
+ <input message="testMessage"/>
+ </operation>
+ </portType>
+ <binding name="testBinding" type="testPortType">
+ <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <operation name="test">
+ <soap:operation soapAction="#test" style="$style"/>
+ <input>
+ <soap:body parts="body" use="$use" namespace="http://test-uri/"/>
+ </input>
+ </operation>
+ </binding>
+ <service name="testService">
+ <port name="testPort" binding="tns:testBinding">
+ <soap:address location="test://" />
+ </port>
+ </service>
+</definitions>
+EOF;
+
+ $fname = tempnam ("./", "wsdl");
+ $f = fopen($fname,"w");
+ fwrite($f,$wsdl);
+ fclose($f);
+ $x = new SoapObject($fname);
+ $y = new SoapServer("http://test-uri/");
+ $y->bind($fname);
+ $y->addfunction("test");
+ unlink($fname);
+
+ $x->__trace(1);
+ $x->test($param);
+ $xml = xml_parser_create();
+ $req = $x->__getlastrequest();
+ echo $req;
+ if ($style == "rpc") {
+ $HTTP_RAW_POST_DATA = $req;
+ ob_start();
+ $y->handle();
+ ob_end_clean();
+ var_dump($val);
+ }
+
+/*
+ xml_parse_into_struct($xml,$x->__getlastrequest(),&$x,&$y);
+ var_dump($x);
+ var_dump($y);
+*/
+}
+?>
\ No newline at end of file