1

我需要将简单的条件表达为程序输入。输入必须是人类可读的。

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 更“可读”,我应该创建一个自定义的平面文件格式。

4

4 回答 4

2

XML 对此没有任何问题,但您可以使用更轻的语法(如 LISP 样式列表)为自己节省一些开销:

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

您可以使用 if 中的项目排序,而不是显式声明条件 true、false。您将拥有的基本要求是保留正确的语法树。

于 2009-01-20T00:55:33.937 回答
1

也许您听说过或看过RuleML

这似乎是您正在寻找的。有一个开源规则引擎,它使用我在 C# 中使用的 RuleML for .NET:NxBRE

NxBRE 还有一个 Visio 模板,可以让其他人更容易理解规则。他们还尝试了一种人类可读的格式,但我不确定这是否仍在进行中。

于 2009-01-20T01:49:41.003 回答
0

您说您希望它是人类可读的,然后您提供了一个几乎难以理解的 XML 示例。我不确定 XML 在这里给你买了什么。一个真正人类可读的语言的简单解析器可能是您时间的一项很好的投资。

于 2009-01-20T01:45:56.253 回答
0

由于在这种情况下 XML 很方便,而 VB 非常“人类可读”,我想我会使用这样的东西:

    <Conditional>
        If AnimalType = Leopard And (SourceCountry = Kenya Or TargetCountry = Kenya) Then
            ZooKeeper=Jack
        Else
            ZooKeeper=Jill
        End If
    </Conditional>
于 2009-01-20T17:04:45.167 回答