2014-06-24 12 views
8

Ho difficoltà a trovare un solido esempio di una matrice semplice in uno stile di documento/letterale incartato.Esempio di documento spostato/matrice letterale

Considerare una funzione PHP che genera un array fino a un conteggio massimo.

/** 
* @param int $max 
* @return string[] $count 
*/ 
public function countTo($max) 
{ 
    $array = array(); 
    for ($i = 0; $i < $max; $i++) { 
     $array[] = 'Number: ' . ($i + 1); 
    } 
    return $array; 
} 

I tipi WSDL generato per questo sono:

<xsd:complexType name="countTo"> 
    <xsd:sequence> 
    <xsd:element name="max" type="xsd:int"/> 
    </xsd:sequence> 
</xsd:complexType> 
<xsd:element name="countTo" nillable="true" type="ns:countTo"/> 
<xsd:complexType name="ArrayOfCount"> 
    <xsd:sequence> 
    <xsd:element minOccurs="0" maxOccurs="unbounded" name="count" nillable="true" type="xsd:string"/> 
    </xsd:sequence> 
</xsd:complexType> 
<xsd:complexType name="countToResponse"> 
    <xsd:sequence> 
    <xsd:element name="count" type="ns:ArrayOfCount"/> 
    </xsd:sequence> 
</xsd:complexType> 
<xsd:element name="countToResponse" nillable="true" type="ns:countToResponse"/> 

La richiesta nel corpo sarà simile:

<ns1:countTo> 
    <max>5</max> 
</ns1:countTo> 

Ma cosa significa la risposta simile, e qual è il convenzione?

Attualmente, SoapServer sta generando

<ns1:countToResponse> 
    <count> 
    <count>Number: 1</count> 
    <count>Number: 2</count> 
    <count>Number: 3</count> 
    <count>Number: 4</count> 
    <count>Number: 5</count> 
    </count> 
</ns1:countToResponse> 

io non sono sicuro circa le nidificati count elementi. Forse questo dovrebbe essere item (e il WSDL dovrebbe essere aggiornato per farlo accadere).

<ns1:countToResponse> 
    <count> 
    <item>Number: 1</item> 
    <item>Number: 2</item> 
    <item>Number: 3</item> 
    <item>Number: 4</item> 
    <item>Number: 5</item> 
    </count> 
</ns1:countToResponse> 
+0

avete bisogno di campione di nuovo WSDL-schema (per la risposta come ' ..') o cosa? – reg

+0

Quello che sto cercando è la convenzione accettata per l'effettivo XML prodotto per il documento/letterale incartato. Vi è abbondanza di documentazione su cosa potrebbe essere il WSDL e come dovrebbe differire dalla versione RPC. Solo niente in giro su quali sono le pratiche accettate per il documento elaborato/XML letterale. – Reuben

+0

Mi sembra una domanda di opinione. Si potrebbe facilmente fare uno e ho avuto la sfortuna di trattare con sistemi che usano entrambi. – yakatz

risposta

3

Non c'è davvero alcuna convenzione per questo. A volte è utile quando si dispone di un array di item per denominare la raccolta items. Ma poiché il tuo elemento è chiamato count è un po 'più difficile, dal momento che counts non sarebbe una risposta accettata. È possibile scegliere result, ma ciò si adatta solo quando è anche l'unico elemento contenitore, come nell'esempio.

<xsd:complexType name="countToResponse"> 
    <xsd:sequence> 
    <xsd:element name="result" type="ns:ArrayOfCount"/> 
    </xsd:sequence> 
</xsd:complexType>