dmitry          Wed Sep 28 07:23:32 2005 EDT

  Added files:                 
    /php-src/ext/soap/tests/bugs        bug34453.phpt bug34453.wsdl xml2.xsd 

  Modified files:              
    /php-src/ext/soap   php_schema.c 
  Log:
  Fixed bug #34453 (parsing http://www.w3.org/2001/xml.xsd exception)
  
  
http://cvs.php.net/diff.php/php-src/ext/soap/php_schema.c?r1=1.58&r2=1.59&ty=u
Index: php-src/ext/soap/php_schema.c
diff -u php-src/ext/soap/php_schema.c:1.58 php-src/ext/soap/php_schema.c:1.59
--- php-src/ext/soap/php_schema.c:1.58  Wed Aug  3 10:07:47 2005
+++ php-src/ext/soap/php_schema.c       Wed Sep 28 07:23:30 2005
@@ -17,7 +17,7 @@
   |          Dmitry Stogov <[EMAIL PROTECTED]>                             |
   +----------------------------------------------------------------------+
 */
-/* $Id: php_schema.c,v 1.58 2005/08/03 14:07:47 sniper Exp $ */
+/* $Id: php_schema.c,v 1.59 2005/09/28 11:23:30 dmitry Exp $ */
 
 #include "php_soap.h"
 #include "libxml/uri.h"
@@ -534,10 +534,6 @@
                if (node_is_equal(trav,"simpleType")) {
                        sdlTypePtr newType, *tmp;
 
-                       if (memberTypes != NULL) {
-                               soap_error0(E_ERROR, "Parsing Schema: union has 
both 'memberTypes' attribute and subtypes");
-                       }
-
                        newType = emalloc(sizeof(sdlType));
                        memset(newType, 0, sizeof(sdlType));
 

http://cvs.php.net/co.php/php-src/ext/soap/tests/bugs/bug34453.phpt?r=1.1&p=1
Index: php-src/ext/soap/tests/bugs/bug34453.phpt
+++ php-src/ext/soap/tests/bugs/bug34453.phpt
--TEST--
Bug #29839 incorrect convert (xml:lang to lang)
--SKIPIF--
<?php require_once('skipif.inc'); ?>
--FILE--
<?php

function EchoString($s) {
  return $s;
}

class LocalSoapClient extends SoapClient {

  function __construct($wsdl, $options) {
    parent::__construct($wsdl, $options);
    $this->server = new SoapServer($wsdl, $options);
    $this->server->addFunction('EchoString');
  }

  function __doRequest($request, $location, $action, $version) {
    ob_start();
    $this->server->handle($request);
    $response = ob_get_contents();
    ob_end_clean();
    return $response;
  }

}

$client = new LocalSoapClient(dirname(__FILE__)."/bug34453.wsdl", 
array("trace"=>1)); 
$client->EchoString(array("value"=>"hello","lang"=>"en"));
echo $client->__getLastRequest();
echo $client->__getLastResponse();
echo "ok\n";
?>
--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";><SOAP-ENV:Body><string 
xml:lang="en"><ns1:value>hello</ns1:value></string></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:ns1="http://test-uri";><SOAP-ENV:Body><string 
xml:lang="en"><ns1:value>hello</ns1:value></string></SOAP-ENV:Body></SOAP-ENV:Envelope>
ok
http://cvs.php.net/co.php/php-src/ext/soap/tests/bugs/bug34453.wsdl?r=1.1&p=1
Index: php-src/ext/soap/tests/bugs/bug34453.wsdl
+++ php-src/ext/soap/tests/bugs/bug34453.wsdl
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"; 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:tns="http://test-uri"; 
targetNamespace="http://test-uri";>
        <types>
                <xs:schema targetNamespace="http://test-uri"; 
elementFormDefault="qualified">
                        <import 
namespace="http://www.w3.org/XML/1998/namespace"; schemaLocation="xml2.xsd" />
                        <complexType name="LocalizedString">
                                <sequence>
                                        <element name="value" 
type="xsd:string"/>
                                </sequence>
                                <attribute ref="xml:lang" use="required"/>
                        </complexType>
                </xs:schema>
        </types>
        <message name="EchoStringRequest">
                <part name="string" type="tns:LocalizedString"/>
        </message>
        <message name="EchoStringResponse">
                <part name="string" type="tns:LocalizedString"/>
        </message>
        <portType name="AWSProductDataPortType">
                <operation name="EchoString">
                        <input message="tns:EchoStringRequest"/>
                        <output message="tns:EchoStringResponse"/>
                </operation>
        </portType>
        <binding name="AWSProductDataBinding" type="tns:AWSProductDataPortType">
                <soap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"/>
                <operation name="EchoString">
                        <soap:operation soapAction="http://test-uri"/>
                        <input>
                                <soap:body use="literal"/>
                        </input>
                        <output>
                                <soap:body use="literal"/>
                        </output>
                </operation>
        </binding>
        <service name="AWSProductData">
                <port name="AWSProductDataPort" 
binding="tns:AWSProductDataBinding">
                        <soap:address 
location="http://aws-beta.amazon.com/onca/soap?Service=AWSProductData"/>
                </port>
        </service>
</definitions>

http://cvs.php.net/co.php/php-src/ext/soap/tests/bugs/xml2.xsd?r=1.1&p=1
Index: php-src/ext/soap/tests/bugs/xml2.xsd
+++ php-src/ext/soap/tests/bugs/xml2.xsd
<?xml version='1.0'?>
<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"; 
xmlns:xs="http://www.w3.org/2001/XMLSchema"; xml:lang="en">

 <xs:annotation>
  <xs:documentation>
   See http://www.w3.org/XML/1998/namespace.html and
   http://www.w3.org/TR/REC-xml for information about this namespace.

    This schema document describes the XML namespace, in a form
    suitable for import by other schema documents.  

    Note that local names in this namespace are intended to be defined
    only by the World Wide Web Consortium or its subgroups.  The
    following names are currently defined in this namespace and should
    not be used with conflicting semantics by any Working Group,
    specification, or document instance:

    base (as an attribute name): denotes an attribute whose value
         provides a URI to be used as the base for interpreting any
         relative URIs in the scope of the element on which it
         appears; its value is inherited.  This name is reserved
         by virtue of its definition in the XML Base specification.

    id   (as an attribute name): denotes an attribute whose value
         should be interpreted as if declared to be of type ID.
         The xml:id specification is not yet a W3C Recommendation,
         but this attribute is included here to facilitate experimentation
         with the mechanisms it proposes.  Note that it is _not_ included
         in the specialAttrs attribute group.

    lang (as an attribute name): denotes an attribute whose value
         is a language code for the natural language of the content of
         any element; its value is inherited.  This name is reserved
         by virtue of its definition in the XML specification.
  
    space (as an attribute name): denotes an attribute whose
         value is a keyword indicating what whitespace processing
         discipline is intended for the content of the element; its
         value is inherited.  This name is reserved by virtue of its
         definition in the XML specification.

    Father (in any context at all): denotes Jon Bosak, the chair of 
         the original XML Working Group.  This name is reserved by 
         the following decision of the W3C XML Plenary and 
         XML Coordination groups:

             In appreciation for his vision, leadership and dedication
             the W3C XML Plenary on this 10th day of February, 2000
             reserves for Jon Bosak in perpetuity the XML name
             xml:Father
  </xs:documentation>
 </xs:annotation>

 <xs:annotation>
  <xs:documentation>This schema defines attributes and an attribute group
        suitable for use by
        schemas wishing to allow xml:base, xml:lang or xml:space attributes
        on elements they define.

        To enable this, such a schema must import this schema
        for the XML namespace, e.g. as follows:
        &lt;schema . . .>
         . . .
         &lt;import namespace="http://www.w3.org/XML/1998/namespace";
                    schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>

        Subsequently, qualified reference to any of the attributes
        or the group defined below will have the desired effect, e.g.

        &lt;type . . .>
         . . .
         &lt;attributeGroup ref="xml:specialAttrs"/>
 
         will define a type which will schema-validate an instance
         element with any of those attributes</xs:documentation>
 </xs:annotation>

 <xs:annotation>
  <xs:documentation>In keeping with the XML Schema WG's standard versioning
   policy, this schema document will persist at
   http://www.w3.org/2005/08/xml.xsd.
   At the date of issue it can also be found at
   http://www.w3.org/2001/xml.xsd.
   The schema document at that URI may however change in the future,
   in order to remain compatible with the latest version of XML Schema
   itself, or with the XML namespace itself.  In other words, if the XML
   Schema or XML namespaces change, the version of this document at
   http://www.w3.org/2001/xml.xsd will change
   accordingly; the version at
   http://www.w3.org/2005/08/xml.xsd will not change.
  </xs:documentation>
 </xs:annotation>

 <xs:attribute name="lang">
  <xs:annotation>
   <xs:documentation>Attempting to install the relevant ISO 2- and 3-letter
         codes as the enumerated possible values is probably never
         going to be a realistic possibility.  See
         RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry
         at http://www.iana.org/assignments/lang-tag-apps.htm for
         further information.

         The union allows for the 'un-declaration' of xml:lang with
         the empty string.</xs:documentation>
  </xs:annotation>
  <xs:simpleType>
   <xs:union memberTypes="xs:language">
    <xs:simpleType>    
     <xs:restriction base="xs:string">
      <xs:enumeration value=""/>
     </xs:restriction>
    </xs:simpleType>
   </xs:union>
  </xs:simpleType>
 </xs:attribute>

 <xs:attribute name="space">
  <xs:simpleType>
   <xs:restriction base="xs:NCName">
    <xs:enumeration value="default"/>
    <xs:enumeration value="preserve"/>
   </xs:restriction>
  </xs:simpleType>
 </xs:attribute>

 <xs:attribute name="base" type="xs:anyURI">
  <xs:annotation>
   <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
                     information about this attribute.</xs:documentation>
  </xs:annotation>
 </xs:attribute>
 
 <xs:attribute name="id" type="xs:ID">
  <xs:annotation>
   <xs:documentation>See http://www.w3.org/TR/xml-id/ for
                     information about this attribute.</xs:documentation>
  </xs:annotation>
 </xs:attribute>

 <xs:attributeGroup name="specialAttrs">
  <xs:attribute ref="xml:base"/>
  <xs:attribute ref="xml:lang"/>
  <xs:attribute ref="xml:space"/>
 </xs:attributeGroup>

</xs:schema>

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to