В нашей организации, мы обычно используем XML-сообщения, выглядит следующим образом: (. В XSDs используемые показаны ниже)Как определить элементы с именами без имени в элементах с именами?
<sev:serviceRequest xmlns:foo="http://foo.com/" xmlns:sev="http://service.com/">
<sev:header>
<foo:headerElement_1>var1</foo:headerElement_1>
<foo:headerElement_2>var2</foo:headerElement_2>
...
</sev:header>
<sev:data>
<sev:requestData>
<sev:requestElement_1>var3</sev:requestElement_1>
<sev:requestElement_2>var4</sev:requestElement_2>
...
</sev:requestData>
</sev:data>
</sev:serviceRequest>
Я хочу, чтобы изменить наши XSDs так, что они будут поддерживать сообщения, которые выглядят как :
<sev:serviceRequest xmlns:foo="http://foo.com/" xmlns:sev="http://service.com/">
<sev:header>
<foo:headerElement_1>var1</foo:headerElement_1>
<foo:headerElement_2>var2</foo:headerElement_2>
...
</sev:header>
<sev:data>
<requestData>
<requestElement_1>var3</requestElement_1>
<requestElement_2>var4</requestElement_2>
...
</requestData>
</sev:data>
</sev:serviceRequest>
Таким образом, под элементом данных не появятся пространства имен.
Я попытался удалить tns: decliation на элементе requestData в service.xsd, но это необходимо.
Я попытался удалить elementFormDefault = "квалифицированное" объявление во всех XSD, но это не помогло.
Я попытался удалить объявление targetNamespace = "http://service.com/" в service.xsd, но тогда элемент ServiceRequest НЕ должен иметь пространство имен.
Возможно ли это?
service.xsd:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://service.com/" xmlns:foo=""http://foo.com/" xmlns:ibmSchExtn="http://www.ibm.com/schema/extensions" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://service.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<xsd:include schemaLocation="ServiceData.xsd"/>
<xsd:import namespace=""http://foo.com/" schemaLocation="Header.xsd"/>
<xsd:element ibmSchExtn:docRoot="true" name="serviceRequest" type="tns:ServiceRequestType"/>
<xsd:element ibmSchExtn:docRoot="true" name="serviceResponse" type="tns:ServiceResponseType"/>
<xsd:complexType name="ServiceRequestType">
<xsd:sequence>
<xsd:element name="header" type="foo:Header"/>
<xsd:element maxOccurs="1" minOccurs="0" name="data">
<xsd:complexType>
<xsd:sequence maxOccurs="1" minOccurs="1">
<xsd:element name="requestData" type="tns:requestDataType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
...
header.xsd:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://foo.com/" xmlns:foo="http://foo.com/">
<xsd:complexType name="Header">
<xsd:sequence>
<xsd:element name="headerElement_1">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="version" type="xsd:string"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
...
ServiceData.xsd:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://service.com/" version="1.0" xmlns:tns="http://service.com/">
<xsd:complexType name="requestDataType">
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="requestElement_1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="500"/>
...
«несколько исправлений цитаты?» только один ... исправлен. – Alaychem