java - XSD:不需要元素“AdditionalData”
问题描述
我正面临 XSD 验证问题,因为我发送的请求似乎与 xsd 架构不兼容。一直在研究它,但无法找到会导致此类问题的原因。
我得到以下异常:
Caused By: oracle.xml.parser.v2.XMLParseException; lineNumber: 0; columnNumber: 0; Element 'AdditionalData' not expected.
at oracle.xml.parser.v2.XMLError.flushErrors(XMLError.java:274)
at oracle.xml.parser.v2.XMLElement.validateContent(XMLElement.java:3260)
at oracle.xml.parser.v2.XMLElement.validateContent(XMLElement.java:3171)
at oracle.integration.platform.blocks.mesh.MeshImpl.validateXML(MeshImpl
下面是 UserData xsd 架构。这里存在导致上述异常的元素“AdditionalData”。关闭验证后,我的用例可以正常工作。
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
targetNamespace="http://xmlns.myapp.com/UserMngtApp/UserSrvc/UserData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://xmlns.myapp.com/UserMngtApp/UserSrvc/UserData"
xmlns:general="http://xmlns.myapp.com/UserMngtApp/UserSrvc/GeneralData"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" jaxb:version="1.0"
jaxb:extensionBindingPrefixes="xjc">
<xs:annotation>
<xs:appinfo>
<jaxb:schemaBindings>
<jaxb:package name="myapp.main.requestdataws.webservicestubs.types"/>
</jaxb:schemaBindings>
</xs:appinfo>
</xs:annotation>
<xs:import namespace="http://xmlns.myapp.com/UserMngtApp/UserSrvc/GeneralData"
schemaLocation="GeneralRequestData.xsd"/>
<xs:element name="UserId" type="xs:string"/>
<xs:element name="UserData" type="UserDataType"/>
<xs:complexType name="UserDataType">
<xs:sequence>
<xs:element name="usr_key" type="general:MultiValueType"
nillable="true"/>
<xs:element name="act_key" type="general:MultiValueType"
nillable="true"/>
<xs:element name="LastName" type="general:MultiValueType"
nillable="true"/>
<xs:element name="FirstName" type="general:MultiValueType"
nillable="true"/>
<xs:element name="MiddleName" type="general:MultiValueType"
nillable="true"/>
<!-- <xs:element name="FullName" type="general:MultiValueType"/> -->
<xs:element name="DisplayName" type="general:MapValueType"
nillable="true"/>
<xs:element name="XellerateType" type="general:MultiValueType"
nillable="true"/>
<xs:element name="Status" type="general:MultiValueType"
nillable="true"/>
<xs:element name="Role" type="general:MultiValueType"
nillable="true"/>
<xs:element name="UserLogin" type="general:MultiValueType"
nillable="true"/>
<xs:element name="FullName" type="general:MapValueType"
nillable="true"/>
<xs:element name="UserManagerKey" type="general:MultiValueType"/>
<xs:element name="AdditionalData"
type="general:AdditionalDataType" maxOccurs="1000"
nillable="true"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
并且是 UserData 引用的另一个模式:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://xmlns.myapp.com/UserMngtApp/UserSrvc/GeneralData"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.myapp.com/UserMngtApp/UserSrvc/GeneralData"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" jaxb:version="1.0" jaxb:extensionBindingPrefixes="xjc">
<xs:annotation>
<xs:appinfo>
<jaxb:schemaBindings>
<jaxb:package name="myapp.main.requestdataws.webservicestubs.types"/>
</jaxb:schemaBindings>
</xs:appinfo>
</xs:annotation>
<xs:complexType name="MultiValueType">
<xs:sequence>
<xs:element name="Value" type="xs:string" minOccurs="0" maxOccurs="1000" nillable="true"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AdditionalDataType">
<xs:sequence>
<xs:element name="Value" type="xs:string" minOccurs="0" maxOccurs="1000" nillable="true"/>
</xs:sequence>
<xs:attribute name="Name" type="xs:string"/>
</xs:complexType>
<xs:complexType name="MapValueType">
<xs:sequence>
<xs:element name="Key" minOccurs="0" maxOccurs="1000" nillable="true">
<xs:complexType>
<xs:attribute name="Name" type="xs:string"/>
<xs:attribute name="Value" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
以下是因上述异常而失败的请求。
<?xml version="1.0" encoding="UTF-8"?><messages>
<beneficiaryUserKey>
<part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="UserId">
<UserId xmlns="http://xmlns.myapp.com/UserMngtApp/UserSrvc/UserData">6</UserId>
</part>
</beneficiaryUserKey>
<beneficiaryUserDetails>
<part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="UserData">
<ns8:UserData xmlns:ns8="http://xmlns.myapp.com/UserMngtApp/UserSrvc/UserData" xmlns="http://xmlns.myapp.com/UserMngtApp/UserSrvc/RequestData" xmlns:ns0="http://xmlns.myapp.com/UserMngtApp/UserSrvc/AccountData" xmlns:ns9="http://xmlns.myapp.com/UserMngtApp/UserSrvc/GeneralData" xmlns:ns3="http://xmlns.myapp.com/UserMngtApp/UserSrvc/EntitlementData" xmlns:ns1="http://xmlns.myapp.com/UserMngtApp/UserSrvc/AppInstanceData" xmlns:ns6="http://xmlns.myapp.com/UserMngtApp/UserSrvc/ResourceData" xmlns:ns2="http://xmlns.myapp.com/UserMngtApp/UserSrvc/CatalogData" xmlns:ns4="http://xmlns.myapp.com/UserMngtApp/UserSrvc/FaultData" xmlns:ns5="http://xmlns.myapp.com/UserMngtApp/UserSrvc/OrgData" xmlns:ns7="http://xmlns.myapp.com/UserMngtApp/UserSrvc/RoleData" xmlns:wsa="http://www.w3.org/2005/08/addressing">
<ns8:usr_key>
<ns9:Value>6</ns9:Value>
</ns8:usr_key>
<ns8:act_key>
<ns9:Value>1</ns9:Value>
</ns8:act_key>
<ns8:LastName>
<ns9:Value>User_1526622550960</ns9:Value>
</ns8:LastName>
<ns8:FirstName>
<ns9:Value>User_1526622550960</ns9:Value>
</ns8:FirstName>
<ns8:MiddleName>
<ns9:Value>User_1526622550960</ns9:Value>
</ns8:MiddleName>
<ns8:DisplayName>
<ns9:Key Name="base" Value="User_1526622550960 User_1526622550960 User_1526622550960"/>
</ns8:DisplayName>
<ns8:XellerateType xsi:nil="true"/>
<ns8:Status>
<ns9:Value>Active</ns9:Value>
</ns8:Status>
<ns8:Role>
<ns9:Value>Full-Time</ns9:Value>
</ns8:Role>
<ns8:UserLogin>
<ns9:Value>USER_1526622550960</ns9:Value>
</ns8:UserLogin>
<ns8:FullName xsi:nil="true"/>
<ns8:UserManagerKey>
<ns9:Value>5</ns9:Value>
</ns8:UserManagerKey>
<ns8:AdditionalData Name="Common Name">
<ns9:Value>User_1526622550960</ns9:Value>
</ns8:AdditionalData>
<ns8:AdditionalData Name="usr_locked">
<ns9:Value>0</ns9:Value>
</ns8:AdditionalData>
<ns8:AdditionalData Name="usr_disabled">
<ns9:Value>0</ns9:Value>
</ns8:AdditionalData>
</ns8:UserData>
</part>
</beneficiaryUserDetails>
</messages>
将要求查看架构并建议架构可能有什么问题。
解决方案
推荐阅读
- python - tf.summary.image 引发 PNG 编码失败
- html - 图像对齐 HTML CSS
- java - 修改后的代码第一次运行时编译失败
- c++ - 访问者出错并返回不同类型
- mysql - SQL 从一个表中获取值,不包括其他表中的减号
- javascript - 限制 Node.js 循环中产生的并发子进程的数量
- php - 使用 zfcampus/zf-oauth2 模块进行用户身份验证
- html - 如何在不知道扩展名的情况下获取文件 - ASP.NET MVC
- ios - 带有 Swift 4/Xcode 10 的 Facebook SDK:参数类型“SDKLoggingBehavior?” 不符合预期的“序列”类型
- html - 我希望我的表单按钮与其他按钮一起出现在一行中