2010-03-01 69 views
1

我有一個XML文件中像下面XSD力使用特定順序的元素與屬性

<transaction name="TEST_EX" type="singletonComplex"> 
    <vo class="svc.vo.UserProfile"> 
    <field deepMapping="true"> 
    <vo class="svc.vo.UserVO"> 
    <field name="UserName" column="User_Name" type="String"/> 
    <field name="Age" column="User_Age" type="Integer"/> 
    </vo> 
    </field> 
    <field name="Address1" column="Address_1" type="String"/> 
    <field name="Address2" column="Address_2" type="String"/> 
    </vo> 
</transaction> 

裏面有幾個領域之一。其中一些字段已將deepMapping啓用爲true。我想確保,如果啓用了deepMapping,那麼它應該首先列出,即。提前Address1Address2。我創建了一個XSD文件,但我不確定如何在該XSD文件中實現此功能。

回答

2

您不能使元素(或屬性)的內容依賴於另一個元素(或屬性)的內容。 XML Schema不支持這一點。你將不得不在其上使用其他驗證機制。

0

xcut說,你不能用XML Schema來做到這一點。你可以做的是使用兩個不同的元素名稱和相同的複雜類型:

<xs:complexType name="fieldType"> 
    <xs:sequence> 
     <xs:element name="field" maxOccurs="unbounded"> 
     <!-- .... --> 
     </xs:element> 
    </xs:sequence> 
    </xs:complexType> 

    <xs:element name="vo"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="deepMappedField" type="fieldType" minOccurs="0"/> 
     <xs:element name="field" type="fieldType" maxOccurs="unbounded"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
+0

謝謝大家的好評。我一定會檢查建議的替代方法。 – Appps 2010-03-02 08:48:04

1

你能改變XML結構嗎?如果是的話,我會建議增加一個新的XML元素組各領域的啓用deepMapping,如:

<transaction name="TEST_EX" type="singletonComplex"> 
    <vo class="svc.vo.UserProfile"> 
    <deepMapping> 
    <vo class="svc.vo.UserVO"> 
    <field name="UserName" column="User_Name" type="String"/> 
    <field name="Age" column="User_Age" type="Integer"/> 
    </vo> 
    </deepMapping> 
    <field name="Address1" column="Address_1" type="String"/> 
    <field name="Address2" column="Address_2" type="String"/> 
    </vo> 
</transaction> 

你的要求把各領域的deepMapping =「真」在頂部或多或少的分組領域。

相關問題