假设我有以下standard.xsd
文件代码,
<xs:complexType name="StdBasicTags">
<xs:sequence>
<xs:element name="Name" type="xs:string" nillable="true">
<xs:annotation>
<xs:documentation>Name</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
现在我有另一个 XSD 文件,它包含上面的文件并在上面的 complexType 中添加了一些额外的元素StdBasicTags
文件名是fullStandard.xsd
,我扩展的方式StdBasicTags
如下:
<xs:include schemaLocation="standard.xsd"/>
........
........
<xs:complexType name="FullStdBasicTags">
<xs:complexContent>
<xs:extension base="StdBasicTags">
<xs:sequence>
<xs:element name="Surname" type="xs:string">
<xs:annotation>
<xs:documentation>Last name</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
我有以下疑问,
我正在使用许可的 Altova XmlSpy 工具为 fullStandard.xsd 文件生成示例 xml,但我只能看到
Name
元素而不是Surname
预期的元素。谁能告诉它可能的原因是什么,我错过了什么?我必须给出另一个名称,
FullStdBasicTags
用于扩展StdBasicTags
和添加新元素。在这种情况下,完整的最终 XML 文件的输出是什么?这个想法是同时拥有Name
并Surname
在同一个父 complexType 之下StdBasicTags
。最后,我期望的架构/输出有什么问题吗?
注意**这两个文件都得到了正确验证。此外,这个想法是在不对文件进行任何更改的情况下实现我刚才提到的
standard.xsd
内容。
**更新我很惊讶直到现在没有人给我任何建议。同时我尝试了这个,
<xs:element name="FullNewRoot">
<xs:complexType>
<xs:sequence>
<xs:element ref="rootElementName"/>
</xs:sequence>
</xs:complexType>
</xs:element>
rootElementName
standard.xsd 的根元素在哪里。现在添加后,我可以看到其他元素。但现在的问题是,整个 standard.xsd 结构首先出现,然后出现我在 fullStandard.xsd 中重新定义的任何内容,而我只想要它们一次。
请提出一些建议。