1

DTD を使用して単純な (IF Then) ルールをモデル化したいと考えています。これは私が思いついたものです:

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

<!ELEMENT rule       (if, then)> 

<!ELEMENT fact       (#PCDATA)> 

<!ELEMENT if         (#PCDATA)> 

<!ELEMENT then       (#PCDATA)>

これは forward ルール ( p => c) の dtd です。if と then の代わりに結論要素と前提要素を使用して、後方規則 ( c <= p) もモデル化したいと考えています。if と then を cons と prem に変更する必要があるだけですか、それとも何か他のことをする必要がありますか。ご回答ありがとうございます。

4

2 に答える 2

0

XML ボキャブラリは、XSLT から同等の機能を「借りる」よりもはるかに悪い結果をもたらす可能性があります (同じ名前を使用していなくても)。

http://www.w3.org/TR/xslt#section-Conditional-Processing-with-xsl:ifを参照してください。

その構文の一般的な形式は次のとおりです。

<xsl:if テスト =ブール式>
  <!-- コンテンツ: テンプレート -->
</xsl:if>

転送などについては、問題が一般的すぎて正確な答えを出すことができません。テストを連鎖させたい場合は、各テストに id を与えてから、適用する次のテストの id を参照する <forward to-test="some-id"/> 要素のようなものを用意します。または、(再び) XSLT のモデルに基づいて、より複雑な条件付き処理語彙を作成することもできます ( http://www.w3.org/TR/xslt#section-Conditional-Processing-with-xsl:chooseを参照)。

DTD は構文を提供しますが、セマンティクスは提供しません。そのため、XML に必要な機能はアプリケーションで開発する必要があります。

于 2011-05-23T08:53:57.153 に答える
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>

ただし、これら 2 つを接続するロジックを提供し、それを自分で作成する必要があります。XML は特別な助けにはなりません。

Prolog などの言語を検討することをお勧めします。

于 2009-10-31T17:15:34.700 に答える