JiBX 1.2,第2部分: 从XML模式到Java代码(二) - 编程入门网
,并且,匹配模式定义的命名组件(全局类型、组或 attributeGroup 定义,或者不管是否是全局性质的元素或属性定义)的步骤可以使用 [@name=...] 断言(predicate)来挑选组件类型的特殊实例。
清单 16. 直接自定义不需要的组件 <schema-set ...> <schema name="PersonName.xsd"> <element path="complexType[@name=PersonNameType]/sequence/element[@name=Affix]" ignore="true"/> <element path= "complexType[@name=PersonNameType]/sequence/element[@name=AlternateScript]" ignore="true"/> </schema> </schema-set> 在 清单 16 中,每条路径都是从模式级别完整拼写的。您还可以在路径中使用通配符。* 通配符作为路径的一部分将匹配模式定义中的所有单个元素,而 ** 通配符将匹配模式定义中的任意数目的嵌套元素。因此不要使用 complexType[@name=PersonNameType]/sequence/element[@name=Affix] 路径,您可以转而使用 complexType[@name=PersonNameType]/*/element[@name=Affix] 或 complexType[@name=PersonNameType]/**/element[@name=Affix]。可是,您不能使用 **/element[@name=Affix] — CodeGen 要求您明确识别任何自定义中涉及的全局定义组件,作为防止错误地应用自定义的安全措施。 只要嵌套匹配模式定义结构,那么就可以嵌套组件自定义。在这种情况下,每个自定义只需指定与包含的自定义相关的目标。您还可以在自定义中使用 name="..." 属性替代路径的最后一步中的 [@name=...] 断言,并且可以跳过最后一步的元素名称(因为它必须始终与自定义元素的名称相同)。您甚至可以完全避免使用路径,而使用结合了名称属性的嵌套。清单 17 显示的自定义与 清单 16 相同,只是进行了重构,使用了这种备选方法: 清单 17. 嵌套自定义不需要的组件 <schema-set ...> <schema name="PersonName.xsd"> <complexType name="PersonNameType"> <sequence> <element name="Affix" ignore="true"/> <element name="AlternateScript" ignore="true"/> </sequence> </complexType> </schema></schema-set> JiBX 1.2,第2部分: 从XML模式到Java代码(二)(8)时间:2012-01-14 IBM Dennis Sosnoski简化数据模型 除了在前一小节中用作示例的 PersonName 组件之外,TimeCard 模式还具有大量未在本教程的样例文档中使用的其他复杂组件。通过使用自定义清除这些未使用的组件,可以大大简化生成的数据模型。在某些情况下,CodeGen 所使用的 Java 值名称无法正常工作。尤其是重复使用同一个元素名称会导致只能通过数字后缀区分值名称,因此很难了解如何正确使用值。参见 清单 10 中的示例,其中生成的代码中包括一对名为 duration 和 duration1 的字段。您可以使用自定义将这些名称改为更有意义的名称。 清单 18 将显示来自代码的 hrxml 目录中的 custom3.xml 文件,该文件包括所有这些自定义。该清单有意使用前一小节讨论的各种识别组件的方法,结合了嵌套、路径,以及包含有名称的路径。值名称自定义位于底部,使用 value-name="simpleDuration" 属性把第二个 duration 使用的名称改为更具描述性的形式。 清单 18. 简化 TimeCard 数据模型并使其含义更清晰 <schema-set xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://ns.hr-xml.org/2007-04-15" pa |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |