英文:
XSD element namespace validation failure
问题
我正在Java应用程序中工作,在其中需要显示作为一个GET REST URL执行结果的XML输出。
我遇到了以下错误:
> cvc-complex-type.2.4.a: 在元素 '{"http://www.example.org/xmlns/sapsaasconnection/SAPAriba/CATALOGCONTENT+facets_GET_Responses+286d4d67-dbb4-4187-ac9e-a9dd069c3035":Output}' 开始处发现无效内容。期望其中之一为 '{Output}'。
我的XSD如下:
<schema targetNamespace="http://www.example.org/xmlns/sapsaasconnection/SAPAriba/CATALOGCONTENT+facets_GET_Responses+286d4d67-dbb4-4187-ac9e-a9dd069c3035"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.example.org/xmlns/sapsaasconnection/SAPAriba/CATALOGCONTENT+facets_GET_Responses+286d4d67-dbb4-4187-ac9e-a9dd069c3035"
>
<complexType name="facets_GET_Responses">
<sequence>
<element maxOccurs="1" minOccurs="0" name="Output" type="tns:FacetResponse"/>
</sequence>
</complexType>
<element name="facets_GET_Responses" type="tns:facets_GET_Responses"/>
<complexType name="MapStringToObject">
<all>
<element maxOccurs="1" minOccurs="0" name="count" type="integer"/>
<element maxOccurs="1" minOccurs="0"
name="ClassificationCode" type="string"/>
</all>
</complexType>
<element name="MapStringToObject" type="tns:MapStringToObject"/>
<complexType name="FacetResponse">
<all>
<element maxOccurs="1" minOccurs="0" name="contents" type="tns:contents"/>
<element maxOccurs="1" minOccurs="0" name="offset" type="integer"/>
<element maxOccurs="1" minOccurs="0" name="limit" type="integer"/>
<element maxOccurs="1" minOccurs="0"
name="totalElements" type="integer"/>
<element maxOccurs="1" minOccurs="0"
name="totalPages" type="integer"/>
<element maxOccurs="1" minOccurs="0"
name="firstPage" type="boolean"/>
<element maxOccurs="1" minOccurs="0" name="lastPage" type="boolean"/>
</all>
</complexType>
<element name="FacetResponse" type="tns:FacetResponse"/>
<complexType name="contents">
<sequence>
<element maxOccurs="unbounded" minOccurs="0"
name="items" type="tns:MapStringToObject"/>
</sequence>
</complexType>
</schema>
我的XML输出如下:
<ns0:facets_GET_Responses xmlns:ns0="http://www.example.org/xmlns/sapsaasconnection/SAPAriba/CATALOGCONTENT+facets_GET_Responses+286d4d67-dbb4-4187-ac9e-a9dd069c3035">
<ns0:Output>
<ns0:contents>
<ns0:items>
<ns0:count>42</ns0:count>
<ns0:ClassificationCode>UNSPSC:1000030</ns0:ClassificationCode>
</ns0:items>
</ns0:contents>
<ns0:limit>25</ns0:limit>
<ns0:offset>0</ns0:offset>
<ns0:totalElements>25</ns0:totalElements>
<ns0:totalPages>1</ns0:totalPages>
<ns0:firstPage>true</ns0:firstPage>
<ns0:lastPage>true</ns0:lastPage>
</ns0:Output>
</ns0:facets_GET_Responses>
我尝试用自己的方式分析了一下,但没有找到问题在哪里。有人可以帮助解释一下XSD架构中期望的内容吗?
英文:
I am working in Java application where I need to show XML output as result of one GET REST URL execution.
I am getting error as:
> cvc-complex-type.2.4.a: Invalid content was found starting with element '{"http://www.example.org/xmlns/sapsaasconnection/SAPAriba/CATALOGCONTENT+facets_GET_Responses+286d4d67-dbb4-4187-ac9e-a9dd069c3035":Output}'. One of '{Output}' is expected.
My XSD is:
<schema targetNamespace="http://www.example.org/xmlns/sapsaasconnection/SAPAriba/CATALOGCONTENT+facets_GET_Responses+286d4d67-dbb4-4187-ac9e-a9dd069c3035"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.example.org/xmlns/sapsaasconnection/SAPAriba/CATALOGCONTENT+facets_GET_Responses+286d4d67-dbb4-4187-ac9e-a9dd069c3035"
>
<complexType name="facets_GET_Responses">
<sequence>
<element maxOccurs="1" minOccurs="0" name="Output" type="tns:FacetResponse"/>
</sequence>
</complexType>
<element name="facets_GET_Responses" type="tns:facets_GET_Responses"/>
<complexType name="MapStringToObject">
<all>
<element maxOccurs="1" minOccurs="0" name="count" type="integer"/>
<element maxOccurs="1" minOccurs="0"
name="ClassificationCode" type="string"/>
</all>
</complexType>
<element name="MapStringToObject" type="tns:MapStringToObject"/>
<complexType name="FacetResponse">
<all>
<element maxOccurs="1" minOccurs="0" name="contents" type="tns:contents"/>
<element maxOccurs="1" minOccurs="0" name="offset" type="integer"/>
<element maxOccurs="1" minOccurs="0" name="limit" type="integer"/>
<element maxOccurs="1" minOccurs="0"
name="totalElements" type="integer"/>
<element maxOccurs="1" minOccurs="0"
name="totalPages" type="integer"/>
<element maxOccurs="1" minOccurs="0"
name="firstPage" type="boolean"/>
<element maxOccurs="1" minOccurs="0" name="lastPage" type="boolean"/>
</all>
</complexType>
<element name="FacetResponse" type="tns:FacetResponse"/>
<complexType name="contents">
<sequence>
<element maxOccurs="unbounded" minOccurs="0"
name="items" type="tns:MapStringToObject"/>
</sequence>
</complexType>
</schema>
My XML output is:
<ns0:facets_GET_Responses xmlns:ns0="http://www.example.org/xmlns/sapsaasconnection/SAPAriba/CATALOGCONTENT+facets_GET_Responses+286d4d67-dbb4-4187-ac9e-a9dd069c3035">
<ns0:Output>
<ns0:contents>
<ns0:items>
<ns0:count>42</ns0:count>
<ns0:ClassificationCode>UNSPSC:1000030</ns0:ClassificationCode>
</ns0:items>
</ns0:contents>
<ns0:limit>25</ns0:limit>
<ns0:offset>0</ns0:offset>
<ns0:totalElements>25</ns0:totalElements>
<ns0:totalPages>1</ns0:totalPages>
<ns0:firstPage>true</ns0:firstPage>
<ns0:lastPage>true</ns0:lastPage>
</ns0:Output>
</ns0:facets_GET_Responses>
I tried to analyze it in my way but didn't find what's wrong here.
Can anybody help here as what is expected in XSD schema?
答案1
得分: 1
如果您希望更改您的XSD,请将elementFormDefault="unqualified"
添加到schema
元素。
如果您希望更改您的XML,请从除ns0:facets_GET_Responses
之外的所有元素标签中删除ns0
命名空间前缀。
有关elementFormDefault
的详细解释,请参阅https://stackoverflow.com/q/1463138/290085。
英文:
If you wish to change your XSD, add elementFormDefault="unqualified"
to the schema
element.
If you wish to change your XML, remove the ns0
namespace prefix from all element tags except ns0:facets_GET_Responses
.
See https://stackoverflow.com/q/1463138/290085 for detailed explanations regarding elementFormDefault
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论