1

MathML DTD を読んでいました。コードの行に出くわしました。以下はコード行です。

<!ENTITY % mathml-qname.module "INCLUDE">
<![%mathml-qname.module; [<!ENTITY % mathml-qname.mod PUBLIC "-//W3C//ENTITIES    MathML   3.0 Qualified Names 1.0//EN" "mathml3-qname.mod"> %mathml-qname.mod;]]>

上記の2行が理解できませんでした。誰でも構文を説明できますか?

4

2 に答える 2

1

mathml-qname.module最初の行は、値" "で名前が付けられたパラメータエンティティを宣言していますINCLUDE

<!ENTITY % mathml-qname.module "INCLUDE">

次のビットは、いくつかの行に分割します。

<![%mathml-qname.module; [
<!ENTITY % mathml-qname.mod PUBLIC 
  "-//W3C//ENTITIES    MathML   3.0 Qualified Names 1.0//EN" 
  "mathml3-qname.mod"> 
  %mathml-qname.mod;
]]>

最初と最後の行(<![%mathml-qname.module;[... ]]>)は条件付きセクションです。つまり、キーワードの値に応じて、通常どおりに読み取られて処理されるか、スキップされるセクションです。キーワードは、2つの左角かっこで囲まれています。ここでは、パラメータエンティティへの参照によって指定されていますmathml-qname.module。パラメータエンティティ参照を展開すると、条件付きセクションは次のようになります。

<![INCLUDE [
 ...
]]>

ご想像のとおり、キーワードの意味は次のINCLUDEとおりです。このセクションを含め、読み、処理します。(他の可能な値はIGNOREです。)

マークされたセクション内には、という名前のパラメータエンティティ用の別のパラメータエンティティ宣言がありますmathml-qname.modPUBLICキーワードは、エンティティのパブリック識別子とシステム識別子を提供します。簡単に言うと、問題のエンティティはMathML 3.0修飾名のエンティティのコレクションであり、相対URI(このパラメータエンティティ宣言を含むリソースに対して)がであるリソースにありますmathml3-qname.mod

のパラメータエンティティ宣言に続いてmathml-qname.mod、同じパラメータエンティティ(%mathml-qname.mod;)への参照があります。これにより、エンティティが読み取られて処理されます。

非公式に言うと、このコードブロックは、デフォルトで外部リソースmathml3-qname.modを参照する必要があることを指定しています。ただし、ユーザーは、構成内の適切な場所に次の形式のパラメーターエンティティ宣言を含めることで、そのデフォルトをオーバーライドできます。

<!ENTITY % mathml-qname.module "IGNORE">

MathML 3.0の修飾名エンティティに対して異なる宣言のセットがある場合は、これを行うことができます。

于 2013-02-19T17:01:26.237 に答える
1

この行:

<!ENTITY % mathml-qname.module "INCLUDE">

パラメータエンティティです。(パラメーター エンティティは DTD でのみ使用できます。) エンティティの値は "INCLUDE" です。

この行:

<![%mathml-qname.module; [<!ENTITY % mathml-qname.mod PUBLIC "-//W3C//ENTITIES    MathML   3.0 Qualified Names 1.0//EN" "mathml3-qname.mod"> %mathml-qname.mod;]]>

追加のエンティティ宣言を含む外部ファイルを指す別のパラメーター エンティティです。違いは、条件セクションにラップされていることです。基本的には、mathml-qname.module解決後は次のようになります。

<![INCLUDE [<!ENTITY % mathml-qname.mod PUBLIC "-//W3C//ENTITIES    MathML   3.0 Qualified Names 1.0//EN" "mathml3-qname.mod"> %mathml-qname.mod;]]>

これは、mathml-qname.mod宣言と参照が含まれることを意味します。がinINCLUDEに変更された場合、 の宣言と参照は無視されます。IGNOREmathml-qname.modulemathml-qname.mod

于 2013-02-19T16:58:54.020 に答える