如何为给定的SOAP HEADER创建对应的XSD文件?
为WSSE SOAP安全头生成对应的XSD文件
以下是匹配你提供的SOAP安全头的XSD文件,完全对应原XML的结构、命名空间和属性要求:
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" targetNamespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" elementFormDefault="qualified"> <!-- 导入WS-Security Utility命名空间的XSD,支持wsu:Id属性 --> <xs:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"/> <!-- 声明SOAP信封的mustUnderstand属性 --> <xs:attribute name="mustUnderstand" type="xs:string" form="qualified" namespace="http://schemas.xmlsoap.org/soap/envelope/"/> <!-- 定义Username元素 --> <xs:element name="Username" type="xs:string"/> <!-- 定义Password元素 --> <xs:element name="Password" type="xs:string"/> <!-- 定义UsernameToken的复杂类型,包含子元素和wsu:Id属性 --> <xs:complexType name="UsernameTokenType"> <xs:sequence> <xs:element ref="wsse:Username"/> <xs:element ref="wsse:Password"/> </xs:sequence> <xs:attribute ref="wsu:Id" use="optional"/> </xs:complexType> <!-- 定义UsernameToken元素 --> <xs:element name="UsernameToken" type="wsse:UsernameTokenType"/> <!-- 定义Security的复杂类型,包含UsernameToken子元素和mustUnderstand属性 --> <xs:complexType name="SecurityType"> <xs:sequence> <xs:element ref="wsse:UsernameToken"/> </xs:sequence> <xs:attribute ref="soapenv:mustUnderstand" use="optional"/> </xs:complexType> <!-- 定义根元素Security --> <xs:element name="Security" type="wsse:SecurityType"/> </xs:schema>
关键说明
- 严格对应原XML的三个命名空间:wsse(安全扩展)、wsu(安全工具)、soapenv(SOAP信封)
- 导入wsu命名空间的XSD,确保
wsu:Id属性的合法性 - 所有元素和属性的可选性、类型都匹配原XML的结构,比如
wsu:Id和soapenv:mustUnderstand都设为可选 - 元素顺序严格遵循原XML的层级:Security → UsernameToken → Username/Password
内容的提问来源于stack exchange,提问作者shashi kumar k
相关产品推荐
相关产品推荐

