2009-01-20 217 views
1

我需要將簡單的條件表達爲程序輸入。輸入必須是人類可讀的。以XML格式存儲條件邏輯(邏輯結構)

XML適合這個嗎?

例如,我有以下條件語句:

If AnimalType = Leopard And (SourceCountry = Kenya Or TargetCountry = Kenya) Then 
    ZooKeeper=Jack 
Else 
    ZooKeeper=Jill 
End If 

表達上述的XML可能是這個樣子:

<If>     
    <Conditional>   
     <And>  
      <AnimalType>Leopard<AnimalType> 
      <Or>  
       <SourceCountry>Kenya</SourceCountry> 
       <TargetCountry>Kenya</TargetCountry> 
      </Or> 
     </And>  
    </Conditional> 
    <True> 
     <ZooKeeper>Jack</ZooKeeper> 
    </True> 
    <False> 
     <ZooKeeper>Jill</ZooKeeper> 
    <False> 
</If> 

就如何最好地代表了XML條件語句任何想法?

我還沒有探索使用屬性。我現在不需要嵌套'If'語句或'Else If'條款,但是我會嘗試去處理它們。

也許VB代碼比XML更「可讀」,在這種情況下,我應該創建一個自定義平面文件格式。

回答

0

你說你希望它是人類可讀的,然後你提出了一個幾乎不可逾越的XML例子。我不確定XML在這裏購買了什麼。一個真正的人類可讀語言的簡單解析器可能是你的時間的一個很好的投資。

2

這沒有什麼錯XML這是的,但你可能會有些節省開銷一下像Lisp風格列表打火機語法:

(if 
    (and 
     (AnimalType Leopard) 
     (or 
      (SourceCountry Kenya) 
      (TargetCountry Kenya) 
     ) 
    ) 
    (ZooKeeper Jack) 
    (ZooKeeper Jill) 
) 

你可以,如果不是明確地使用項目的排序裏面聲明條件,是true,false。您將擁有的基本要求是保留適當的語法樹。

1

也許你聽說過或看過RuleML

這似乎是你在找什麼。有一個使用RuleML for .NET的開源規則引擎,我已經使用了C#:NxBRE

NxBRE還有一個Visio模板,可以讓其他人理解規則。他們也嘗試了一種人類可讀的格式,但我不確定這是否仍在進行中。

0

由於XML在這種情況下方便和VB是相當「人類可讀的」,我想我會像這樣的東西去:

<Conditional> 
     If AnimalType = Leopard And (SourceCountry = Kenya Or TargetCountry = Kenya) Then 
      ZooKeeper=Jack 
     Else 
      ZooKeeper=Jill 
     End If 
    </Conditional>