XML Schema转换

时间:2015-08-10 07:14:30

标签: xml xslt schema

我正在开发一个客户端应用程序(嵌入式系统),它使用XML格式与服务器交换数据和配置。

我想在XML模式中添加一些额外的信息,关于XML数据的处理(例如处理程序或任何自定义操作),而不会对服务器端产生任何副作用。

例如,

<xs:element name="ethernet">
    <xs:complexType>
        <xs:sequence>
        <!-- <handler>set_ethernet_address</handler> -->
            <xs:element name="ip" type="ipType"/>
            <xs:element name="net_mask" type="ipType"/>
            <xs:element name="gateway" type="ipType"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

在上面的示例中,comment表示元素 ethernet 具有处理程序 set_ethernet_address 。此信息与服务器端用户完全无关。此外,此处理程序元素不是目标XML文件的一部分。将来我计划开发一个源代码生成器,它从模式生成客户端应用程序代码。

所以我的问题是,

  1. 我可以在评论格式以外的XML模式中添加额外的“处理指令”吗?
  2. 此外,我可以通过删除客户端特定的“处理指令”将该XML架构转换为服务器的新XML架构文件。
  3. 谢谢, Nandkishor。

1 个答案:

答案 0 :(得分:0)

推荐的方法是使用xs:annotation元素:

<xs:element name="ethernet">
    <xs:annotation>
     <xs:appInfo source="http://stackoverflow.com/users/2857369/nandkishor-biradar">
       <hander>set_ethernet_address</handler>
     </xs:appInfo>
    </xs:annotation>
    <xs:complexType>
        <xs:sequence>
            <xs:element name="ip" type="ipType"/>
            <xs:element name="net_mask" type="ipType"/>
            <xs:element name="gateway" type="ipType"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>