2009-10-31 84 views
1

我想使用DTD對一個簡單的(IF Then)規則建模。這就是我所想到的:Forward Forward Rule Xml DTD

<!ELEMENT forward ((rule | fact)*)> 

<!ELEMENT rule  (if, then)> 

<!ELEMENT fact  (#PCDATA)> 

<!ELEMENT if   (#PCDATA)> 

<!ELEMENT then  (#PCDATA)> 

這是一個前向規則的dtd(p => c)。我也想使用結論和前提元素來代替if和then來爲後向規則建模(c < = p)。我是否需要改變,如果然後再考慮和預測,或者我需要做其他事情。我很感謝你的迴應。

回答

0

XML DTD簡單地爲您提供了模型的語法。你可以,例如,寫:

<rule> 
    <if>is raining</if> 
    <then>pigs will fly</then> 
</rule> 

<rule> 
    <cons>pigs will fly</cons> 
    <prem>is raining</prem> 
</rule> 

,但你必須提供連接這兩個任何邏輯和自己編寫。 XML沒有給你任何幫助。

我建議你看一下Prolog等語言。

0

對於XML詞彙表而言,可能會比從XSLT「借用」等效功能(即使您不使用相同名稱)做得更糟。

http://www.w3.org/TR/xslt#section-Conditional-Processing-with-xsl:if

其語法的一般形式是

 
<xsl:if test = boolean-expression> 
    <!-- Content: template --> 
</xsl:if> 

轉發和此類似的,你的問題太籠統給出一個確切的答案。如果你想鏈測試你可能會給你的每個測試一個id,然後有一個類似< forward-test =「some-id」/>元素,它引用了下一個要應用的測試的id。或者,您可能會構建更復雜的條件處理詞彙表,可能基於(再次)XSLT的模型(請參閱http://www.w3.org/TR/xslt#section-Conditional-Processing-with-xsl:choose)。

DTD爲您提供了語法,但沒有語義,因此任何需要在您的XML中使用的功能都必須在您的應用程序中開發。

相關問題