Fehler im XML Schema?

DAB268

Grünschnabel
Hallo.

Ich habe folgende XML Schema entworfen:

Code:
<?xml version="1.0" encoding="utf-16"?>
<xsd:schema attributeFormDefault="unqualified"
	elementFormDefault="qualified" version="1.0"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns="http://watergauge.types.webservices.pegelsuite.uni_koblenz.de"
	targetNamespace="http://watergauge.types.webservices.pegelsuite.uni_koblenz.de">
	
	<xsd:element name="waterGauge" type="waterGaugeType" />
	
	<xsd:complexType name="waterGaugeType">
		<xsd:sequence>
			<xsd:element name="locationNumber" type="xsd:string" />
			<xsd:element name="locationName" type="xsd:string" minOccurs="0" />
			<xsd:element name="ipAddress" type="xsd:string" minOccurs="0" />
			<xsd:element name="getTimeSeriesPath" type="xsd:string" minOccurs="0" />
			<xsd:element name="sensorNumber" type="xsd:integer" minOccurs="0" />
			<xsd:element name="sensorCount" type="xsd:integer" minOccurs="0" />
			<xsd:element name="parameter" type="xsd:string" minOccurs="0" />
			<xsd:element name="maxSensorDeviation" type="xsd:double" minOccurs="0" />
			<xsd:element name="qualityRemark" type="xsd:double" minOccurs="0" />
			<xsd:element name="from" type="xsd:dateTime" minOccurs="0" />
			<xsd:element name="to" type="xsd:dateTime" minOccurs="0" />
			<xsd:element name="timeStamp" type="xsd:dateTime" minOccurs="0" />
		</xsd:sequence>
	</xsd:complexType>
	
</xsd:schema>

Gemeint ist, dass dieses Schema den Namensraum wg=http://watergauge.types.webservices.pegelsuite.uni_koblenz.de besitzt. Also, dass das Element wg:waterGauge vom Typ wg:waterGaugeType ist.

Wenn ich das Schema allerdings mit xjc nach Java importiere und es als Eingabe für einen WebService mit dem Namespace dbh verwende, dann erzeugt dieser das Element wg:waterGauge vom Typ dbh:waterGaugeType.

Die Signatur des Web Services ist:

Code:
package de.uni_koblenz.pegelsuite.webservices.databasewebservice;

@WebService(name = "databaseWebService", serviceName = "databaseWebService", targetNamespace = "http://databasewebservice.webservices.pegelsuite.uni_koblenz.de")
@SOAPBinding(style = Style.DOCUMENT)
@XmlSeeAlso( { org.w3._2000._09.xmldsig_.ObjectFactory.class,
	org.oasis_open.docs.wss._2004._01.oasis_200401_wss_wssecurity_secext_1_0.ObjectFactory.class,
	org.xhydro.minimal._2009._09.ObjectFactory.class,
	org.oasis_open.docs.wss._2004._01.oasis_200401_wss_wssecurity_utility_1_0.ObjectFactory.class,
	de.uni_koblenz.pegelsuite.webservices.types.sensordatalist.ObjectFactory.class
	} )
public class DatabaseWebService {
	
	@WebMethod(action = "getSensorDataList")
	@WebResult(name = "sensorDataList", targetNamespace = "http://sensordatalist.types.webservices.pegelsuite.uni_koblenz.de")
	public SensorDataListType getSensorDataList(@WebParam(name = "waterGauge", targetNamespace = "http://watergauge.types.webservices.pegelsuite.uni_koblenz.de") WaterGaugeType waterGauge) ;

Wo ist da was fehlgeschlagen? Liegt es bereits am Schema? Ist beim generieren was schief gelaufen oder habe ich einen Fehler bei der Signatur des Web Services gemacht?

TIA
DAB268
 
Hi.

Dein Namensraum ist "http://watergauge.types.webservices.pegelsuite.uni_koblenz.de". Du hast in deinem Schema für diesen Namensraum den Namensraum-Präfix "wg" vereinbart.

Wie der Namensraum-Präfix aber nun heißt ist völlig egal, wenn dbh = wg == "http://watergauge.types.webservices.pegelsuite.uni_koblenz.de" gilt, handelt es sich um den gleichen Namensraum.

Gruß
 
dbh ist aber http://databasewebservice.webservices.pegelsuite.uni_koblenz.de
Das entspricht dem Namensraum des Web Services.
Richtig, der Webservice hat diesen Namensraum.

Aber der Parameter der Webservice-Methode hat den Ziel-Namensraum "http://watergauge.types.webservices.pegelsuite.uni_koblenz.de". Also alles OK. Oder funktioniert irgendetwas nicht?

Mit solchen Fragen solltest du dich lieber ans Java Forum wenden. Hier geht es um XML an sich und nicht um irgendwelche Techniken wie man XML verarbeitet.

Gruß
 
Zurück