Hi Mike,
I think the confusion here is that we are using serviceProvider as both an element and an attribute, although they are mutually exclusive.
From the schema, it can be used as an attribute to the serviceInformation element:
<xs:element name="serviceInformation">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="services" type="servicesType" minOccurs="0" />
<xs:element name="serviceGroups" type="serviceGroupsType" minOccurs="0" />
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="version" type="xs:positiveInteger" default="1" />
<xs:attribute name="creationTime" type="timePointType" />
<xs:attribute name="originator" type="originatorType" />
<xs:attribute name="serviceProvider" type="originatorType"/>
<xs:attribute name="terms" type="xs:anyURI" />
<xs:attribute ref="xml:lang" default="en" />
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType>
</xs:element>
and an element under the services element:
<xs:complexType name="servicesType">
<xs:sequence>
<xs:element name="serviceProvider" type="serviceProviderType" minOccurs="0"/>
<xs:element name="service" type="serviceType" minOccurs="0" maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType>
The specification gives guidance on what happens if the attribute is defined, in section 6.2:
If this attribute is defined, the SI document shall not
contain a serviceProvider element
In section 6.4, it gives guidance on what happens if the element is defined:
-
If this element is used then the serviceInformation element shall not define a serviceProvider attribute.
So there is choice of whether to use the short textual description of a service provider (i.e. in the attribute), or a more fully feature element which can contain multiple descriptions, logos, etc.
Hope that helps,
Ben