[英]Extend XSD to put individual elements instead of using the xs:any in an XSD
我有一个带有xs:any的XSD。这使我可以插入自己选择的任何标记/元素。 但是,我想扩展此XSD,以便可以使用自己的特定元素来代替使用xs:any。
我不想编辑相同的XSD,但创建一个扩展XSD,该扩展添加了特定的我想使用的特定元素,而不是使用xs:any
这是我的XSD的一部分。
...
...
...
<xs:element name="MRegReq" type="mss:MRegReqType" />
<xs:complexType name="MRegReqType">
<xs:complexContent>
<xs:extension base="mss:MessageAbstractType">
<xs:sequence>
<xs:element name="User" type="mss:UserType" />
<xs:element name="EData" type="xenc:EDataType"
minOccurs="0" />
<xs:any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
在上面,
我想用扩展名替换它,以便当我使用JAX-WS重新生成存根等时,可以访问XSD扩展名中指定的各个元素(而不必获取request.getAny()和遍历节点以获取每个元素)。
任何指针/帮助将不胜感激
您不能替换扩展中的元素:
如果{derivation method}是扩展名,则以下情况中的适当情况必须为真:
...
1.2其{属性用途}必须是复杂类型定义本身的{属性用途}的子集,也就是说,对于{基本类型定义}的{属性用途}中的每个属性用途,都必须有一个属性用途复杂类型定义本身的{属性使用}中,其{属性声明}与它的属性声明具有相同的{name},{target namespace}和{type definition}。
用简单的语言:扩展名必须包括所有具有相同名称,名称空间和类型的元素作为基本类型。
但是创建另一个扩展应该不是问题:
<xs:choice>
<xs:element name="MRegReqA" type="mss:MRegReqTypeA" />
<xs:element name="MRegReqB" type="mss:MRegReqTypeB" />
</xs:choice>
<xs:complexType name="MRegReqType">
<xs:complexContent>
<xs:extension base="mss:MessageAbstractType">
<xs:sequence>
<xs:element name="User" type="mss:UserType" />
<xs:element name="EData" type="xenc:EDataType" minOccurs="0" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="MRegReqTypeA">
<xs:complexContent>
<xs:extension base="mss:MRegReqType">
<xs:sequence>
<xs:element name="Product" type="mss:ProductType" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="MRegReqTypeB">
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.