The situation is discussed further by Eric Prud'hommeaux in Arguments for Keeping R120.
For example, if http://airline.wsdl/ticketagent/ is a namespace URI, then urn:wsdl:http://airline.wsdl/ticketagent/ is the URI we use in a URI reference to a component defined in the http://airline.wsdl/ticketagent/ namespace.
Element | NCName | NCName of Parent | NCName of Grandparent | Fragment |
message | x (required) | n/a | n/a | message(x) |
part | x (optional) | y (message) | n/a | part(y/x) |
portType | x (required) | n/a | n/a | portType(x) |
operation | x (required) | y (portType) | n/a | operation(y/x) |
input | x (optional) | y (operation) | z (portType) | input(z/y/x) |
output | x (optional) | y (operation) | z (portType) | output(z/y/x) |
fault | x (required) | y (operation) | z (portType) | fault(z/y/x) |
binding | x (required) | n/a | n/a | binding(x) |
service | x (required) | n/a | n/a | service(x) |
port | x (required) | y (service) | n/a | port(y/x) |
If an element has an optional NCName, and no value is supplied, then its default value is used if one is defined. This rule means that a meaningful URI-reference can still be formed for elements like <input> and <output> when their name attribute is missing since WSDL 1.1 defines default NCName values for <input> and <output>. WSDL 1.2 should make the name attribute of <part> required to avoid possible ambiguity.
In WSDL 1.1, <operation> overloading is possible, i.e. a <portType> may have more than one <operation> with the same NCName. In this case, the <operation> is uniquely specified by giving the NCNames of its <input> and <output> elements. WSDL 1.2 makes the <operation> name unique within a <portType>. If it is required to also describe WSDL 1.1 overloaded operations, then the fragment syntax can be extend as follows: operation(z/y/x[input=w,output=v]) where the predicate corresponds the order of declaration of the <input> and <output> elements within the <operation>. The WSDL 1.1 is somewhat vague on how much information is required to disambiguate <operation> when overloading occurs, but we can define precise rules here if deemed appropriate.
Note that the WSDL 1.1 XSD schema has some irregularities which we should correct in WSDL 1.2 For example <port> is nested in <service> but its NCName is unique within the targetnamespace, unlike the case for <part> and <operation>.
Its conceptual elements have the following URI-references:
urn:wsdl:http://airline.wsdl/ticketagent/#message(listFlightsRequest)
urn:wsdl:http://airline.wsdl/ticketagent/#part(listFlightsRequest/depart)
urn:wsdl:http://airline.wsdl/ticketagent/#part(listFlightsRequest/origin)
urn:wsdl:http://airline.wsdl/ticketagent/#part(listFlightsRequest/destination)
urn:wsdl:http://airline.wsdl/ticketagent/#message(listFlightsResponse)
urn:wsdl:http://airline.wsdl/ticketagent/#part(listFlightsResponse/result)
urn:wsdl:http://airline.wsdl/ticketagent/#message(reserveFlightRequest)
urn:wsdl:http://airline.wsdl/ticketagent/#part(reserveFlightRequest/depart)
urn:wsdl:http://airline.wsdl/ticketagent/#part(reserveFlightRequest/origin)
urn:wsdl:http://airline.wsdl/ticketagent/#part(reserveFlightRequest/destination)
urn:wsdl:http://airline.wsdl/ticketagent/#part(reserveFlightRequest/flight)
urn:wsdl:http://airline.wsdl/ticketagent/#message(reserveFlightResponse)
urn:wsdl:http://airline.wsdl/ticketagent/#part(reserveFlightResponse/result)
urn:wsdl:http://airline.wsdl/ticketagent/#portType(TicketAgent)
urn:wsdl:http://airline.wsdl/ticketagent/#operation(TicketAgent/listFlights)
urn:wsdl:http://airline.wsdl/ticketagent/#input(TicketAgent/listFlights/listFlightsRequest)
urn:wsdl:http://airline.wsdl/ticketagent/#output(TicketAgent/listFlights/listFlightsResponse)
urn:wsdl:http://airline.wsdl/ticketagent/#operation(TicketAgent/lreserveFlight)
urn:wsdl:http://airline.wsdl/ticketagent/#input(TicketAgent/lreserveFlight/lreserveFlightRequest)
urn:wsdl:http://airline.wsdl/ticketagent/#output(TicketAgent/lreserveFlight/lreserveFlightResponse)
Unique NCNames are also harder to manage across documents and result is a slight burden to the author who is forced to make the names unqiue, e.g. by adding type-specific suffixes.
XPointer syntax is complex and does not result in easily compared or understood URI-references.
The NUN proposal is more complex, due to the greater complexity of XSD, and is still under development.