php - WSDL:如何同时描述具有属性和字符串值的元素?
问题描述
我可以描述这样的结构:
<element name="One" minOccurs="1" maxOccurs="1">
<complexType>
<sequence>
<element name="Two" type="string" minOccurs="1" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
它导致:
<One>
<Two>str 1</Two>
<Two>str 2</Two>
</One>
我也可以描述这样的结构:
<element name="One" minOccurs="1" maxOccurs="1">
<complexType>
<sequence>
<element name="Two" minOccurs="1" maxOccurs="unbounded">
<complexType>
<attribute name="MyAttr" type="string" />
</complexType>
</element>
</sequence>
</complexType>
</element>
它导致:
<One>
<Two MyAttr="str 1" />
<Two MyAttr="str 2" />
</One>
但是如何描述导致这样的结构:
<One>
<Two MyAttr="str 1">str 2</Two>
<Two MyAttr="str 3">str 4</Two>
</One>
???
解决方案
像这样:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="One">
<xs:complexType>
<xs:sequence>
<xs:element name="Two" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="MyAttr" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
输出将是
<?xml version="1.0" encoding="UTF-8"?>
<One xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Two MyAttr="String">String</Two>
<Two MyAttr="String">String</Two>
</One>