组合xsd,将另一个xsd导入为单个xsd文件

问题描述 投票:0回答:1

我有一个主xsd文件说“Master.xsd”导入其中的另一个xsd“LinckerXSD1”。我想将LinckerXSD1的模式复制到Master,以便它导致另一个xsd文件。这需要以递归方式完成,这意味着Master.xsd可能有多个import语句&LinckerXSD1可能会导入其中的另一个xsd!

Master.xsd :- 
<xs:import namespace="file:////home/i88691/work-Area/xsdLinker/LinckerXSD1.xsd" schemaLocation="LinckerXSD1.xsd"/>
<xs:element name="school">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="firstname" type="xs:string"/>
            <xs:element name="lastname" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
<xs:element name="Addresses" minOccurs="0" nillable="true">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Entry" type="Address" minOccurs="0" maxOccurs="unbounded" nillable="true" xmlns="file:////home/i88691/work-Area/xsdLinker/LinckerXSD1.xsd"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

LinckerXSD1 :- 

<xs:element name="Entry">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="hosename" type="xs:string"/>
            <xs:element name="hoseplase" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

Required Output :-
<xs:import namespace="file:////home/i88691/work-Area/xsdLinker/LinckerXSD1.xsd" schemaLocation="LinckerXSD1.xsd"/>
<xs:element name="school">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="firstname" type="xs:string"/>
            <xs:element name="lastname" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
<xs:element name="Entry">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="hosename" type="xs:string"/>
            <xs:element name="hoseplase" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
java python scala xsd
1个回答
0
投票

你可以手工完成这个(你似乎一直在做)或者有很多工具可以帮你做到这一点,看看Liquid Studio - Flatten Schema。这不会就地扩展定义,但会将所有内容放在一个文件中。

注意:只有当所有XSD共享相同的目标名称空间时,才能将多个XSD折叠为单个XSD。

© www.soinside.com 2019 - 2024. All rights reserved.