2012-11-14 55 views
0

如果我有下面的XML:XML模式可以通過屬性值特定嗎?

<variables> 
     <variable name="age">92</variable> 
     <variable name="school">Fairview</variable> 
     <variable name="birthdate">11/13/2012</variable> 
    </variables> 

有沒有一種方法來創建一個模式,其中,基於名稱的屬性值,它隨後設置節點值(十進制,字符串,日期)?如果是這樣,怎麼樣?

更新:這是用於C#代碼,所以我需要使用> NET運行時獲取此架構信息。

謝謝 - 戴夫

+0

見http://stackoverflow.com/questions/13308585/xsd-schemas-enumeration-based-on-value您例如架構-in-document/13313354#13313354,這可以使用嵌入式schematron(在XSLT [此處](http://code.google.com/p/schematron/)或RelaxNG中實現),只要XSD數據類型足以滿足您的需求http://www.relaxng.org/compact-tutorial-20030326.html#id2814737 – nine9ths

回答

0

下面是RELAX NG

datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes" 

element variable { 
    ((
    attribute name {'age'}, 
    xsd:int) | 
    (
    attribute name {'school'}, 
    text) | 
    (
    attribute name {'birthdate'}, 
    xsd:date)) 
} 
相關問題