我想使用DTD建模一个简单的(IF Then)规则。这就是我想出的:
<!ELEMENT forward ((rule | fact)*)>
<!ELEMENT rule (if, then)>
<!ELEMENT fact (#PCDATA)>
<!ELEMENT if (#PCDATA)>
<!ELEMENT then (#PCDATA)>
这是前向规则的dtd(p =&gt; c)。我也想使用结论和前提元素而不是if和then来模拟后向规则(c&lt; = p)。我是否只需要改变if and then then cons and prem或者我是否需要做其他事情。感谢您的回复。
答案 0 :(得分: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这样的语言。
答案 1 :(得分: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,然后像&lt; forward to-test =“some-id”/&gt;引用要应用的下一个测试的id的元素。或者您可以构建更复杂的条件处理词汇表,可能(再次)基于XSLT的模型(参见http://www.w3.org/TR/xslt#section-Conditional-Processing-with-xsl:choose)。
DTD为您提供语法但没有语义,因此您需要在您的应用程序中开发所需的任何功能。