2014-09-23 74 views
1

我有一個.RNC文件,我在其中定義了所有我的XML元素,它們被relax ng編譯到XSD中。RelaxNG:定義基於另一個元素的元素

我有幾個共享許多屬性的元素,它越來越雜亂的維護......因此我想通過使用/模擬某種繼承來集中化這些信息。

比方說,我這樣定義的元素:

person = element PERSON { 
    attribute name { text }, 
    attribute city { text } 
} 

現在我想延長,是這樣的:

employee = element EMPLOYEE extends PERSON { 
    attribute company { text } 
} 

這可能嗎?怎麼樣?提前致謝。

回答

0

在Relax NG中沒有擴展元素的概念。但是你可以在多個地方使用定義。例如,下面的模式定義了一個personLike結構(即「類似人」的東西)。然後這個personLike定義用於PERSON元素和EMPLOYEE元素。

start = (person | employee)+ 

personLike = 
    attribute name { text }, 
    attribute city { text } 

person = element PERSON { 
    personLike 
} 

employee = element EMPLOYEE { 
    personLike, 
    attribute company { text } 
} 
相關問題