【问题标题】:Forward Backward Rule Xml DTD向前向后规则 Xml DTD
【发布时间】:2011-05-23 16:53:57
【问题描述】:

我想使用 DTD 建模一个简单的 (IF Then) 规则。这是我想出的:

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

<!ELEMENT rule       (if, then)> 

<!ELEMENT fact       (#PCDATA)> 

<!ELEMENT if         (#PCDATA)> 

<!ELEMENT then       (#PCDATA)>

这是转发规则的 dtd (p => c)。我还想使用结论和前提元素而不是 if 和 then 来模拟后向规则( c

【问题讨论】:

    标签: xml dtd


    【解决方案1】:

    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 等语言。

    【讨论】:

      【解决方案2】:

      对于 XML 词汇表来说,比从 XSLT“借用”等效的功能要糟糕得多(即使您不使用相同的名称)。

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

      其语法的一般形式是

      布尔表达式>

      对于转发等类似问题,您的问题过于笼统,无法给出准确的答案。如果你想链接测试,你可以给每个测试一个 id,然后有一个类似 元素,它引用下一个要应用的测试的 id。或者,您可能会构建更复杂的条件处理词汇表,可能(再次)基于 XSLT 的模型(参见 http://www.w3.org/TR/xslt#section-Conditional-Processing-with-xsl:choose)。

      DTD 为您提供语法但没有语义,因此您想要围绕 XML 的任何功能都必须在您的应用程序中开发。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-28
        • 1970-01-01
        • 1970-01-01
        • 2011-07-08
        • 2011-09-03
        • 1970-01-01
        • 1970-01-01
        • 2016-02-20
        相关资源
        最近更新 更多