同一命名空间下扩展FpML Schema中complexType的方法咨询
同命名空间下扩展FpML复杂类型的实现方案
要在不修改原FpML schema文件、且保持同一命名空间的前提下为FxDigitalOption新增元素,可使用XSD标准的redefine(重定义)特性实现,具体操作如下:
实现原理
redefine允许你在同一目标命名空间下,修改或扩展外部引入的schema中已定义的组件,扩展后的类型会全局覆盖原有类型定义,不需要切换命名空间就能生效。
具体代码实现
你的扩展XSD文件结构参考如下:
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema targetNamespace="http://www.fpml.org/FpML-5/confirmation" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.fpml.org/FpML-5/confirmation" elementFormDefault="qualified"> <!-- 引入原FpML schema文件,路径替换为你本地FpML schema的实际路径 --> <xsd:redefine schemaLocation="fpml-fx-5-12.xsd"> <!-- 重定义FxDigitalOption复杂类型 --> <xsd:complexType name="FxDigitalOption"> <xsd:complexContent> <!-- 基于原有FxDigitalOption类型做扩展 --> <xsd:extension base="FxDigitalOption"> <xsd:sequence> <!-- 新增自定义abcd元素,属性可按你的需求调整 --> <xsd:element name="abcd" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation xml:lang="zh-CN">自定义扩展字段</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:redefine> </xsd:schema>
注意事项
- 必须保证扩展XSD的
targetNamespace和原FpML schema的命名空间完全一致,否则重定义不生效 redefine引入的原schema路径要正确,建议使用相对路径或者已配置的公共资源路径- 扩展后的
FxDigitalOption类型会保留原有的所有字段(effectiveDate、tenorPeriod等),同时新增自定义的abcd元素,符合FpML的兼容性要求
内容的提问来源于stack exchange,提问作者Radek
相关产品推荐
相关产品推荐

