2010-01-07 32 views
0

我有一个模式文件,我想分成两部分。一个具有公共字段,另一个具有JAXB(2.1)中的特定字段以实现可重用性。怎么做?想要将模式分解为一个公共部分+“私人”部分。如何?

<?xml version="1.0" encoding="UTF-8" ?> 

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="content"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element ref="idPaciente"/> 
     <xs:element ref="fechaCita"/> 
     </xs:sequence> 
     <xs:attribute name="user" type="xs:string" use="required" /> 
     <xs:attribute name="authorityId" type="xs:string" use="required" /> 
     <xs:attribute name="userName" type="xs:string" use="required" /> 
     <xs:attribute name="profileId" type="xs:string" use="required" /> 
     <xs:attribute name="sessionId" type="xs:string" use="required" /> 
     <xs:attribute name="country" type="xs:string" use="required" /> 
     <xs:attribute name="method" type="xs:string" use="required" /> 
     <xs:attribute name="language" type="xs:string" use="required" /> 
    </xs:complexType> </xs:element> 

    <xs:element name="idPaciente" type="xs:string"/> <xs:element name="fechaCita" type="xs:string"/> 

</xs:schema> 

序列中的两个元素都是不常见的字段,而其他元素将是公共部分。怎么可能做到?

在此先感谢。

+0

我删除了与java相关的标签,因为它们并不真正相关 – skaffman 2010-01-08 14:28:59

回答

0

很难在不知道您的要求的情况下提供建议。如果要验证具有或不具有这两个特定元素的文档,或者可以将特定字段置于不同的名称空间中,则可以将该序列声明为可选(MinOccurance =“0”)。

顺便说一句 - 你应该申报/使用命名空间,无论如何,我经常面对丑陋的副作用,当我在这部分懒得......

0

不知道我理解的问题,但将“扩展”解决你的问题?

<xsd:complexType name="AbstractType" abstract="true"> 
    <xsd:sequence> 
     <xsd:element name="common1" type="xsd:string" minOccurs="1" maxOccurs="1" /> 
     <xsd:element name="common2" type="xsd:string" minOccurs="1" maxOccurs="1" /> 
    </xsd:sequence> 
    </xsd:complexType> 

    <xsd:complexType name="MyType"> 
    <xsd:complexContent> 
     <xsd:extension base="AbstractType"> 
     <xsd:sequence> 
      <xsd:element name="uncommon1" type="xsd:string" minOccurs="1" maxOccurs="1" /> 
      <xsd:element name="uncommon2" type="xsd:string" minOccurs="0" maxOccurs="1" /> 
     </xsd:sequence> 
     </xsd:extension> 
    </xsd:complexContent> 
    </xsd:complexType>