- - PR -
パラメタエンティティ
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2002-02-03 21:25
みなさま、はじめまして!!今、とても悩んでいます。
わかる方がいましたら教えて下さい。よろしくお願いします。 下記のようなコードを書いています。#PCDATAを頻繁に使う ので、パラメタエンティティを使い利用したいと考えています。 ところがエラーで出てきます。どのようにしたらいいのでしょうか? お知らせください。 <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE memberlist[ <!ENTITY % PC "#PCDATA"> <!ELEMENT memberlist (member)*> <!ELEMENT member (id,name,birth)> <!ELEMENT id (%PC;)> <!ELEMENT name (%PC;)> <!ELEMENT birth (%PC;)> ]> と入力すると、 内部サブセットのマークアップ宣言内ではパラメータ エンティティを使用できません。 リソース 'file:///C:/WINDOWS/デスクトップ/TEST1.XML' の実行エラーです。 ライン 6、位置 14 <!ELEMENT id (%PC;)> -------------^ 上記のようになります。どのようにしたら、いいのでしょうか? [ メッセージ編集済み 編集者: tsuka 編集日時 2002-02-03 21:33 ] |
|
投稿日時: 2002-02-05 11:47
エラーメッセージどおり「内部サブセットのマークアップ宣言内ではパラメータ エンティティを使用できません。 」ので、要件からするとDTDを外出しするのが良いと思います。
|
|
投稿日時: 2002-02-05 20:26
やなぎさん、ありがとうございました。
外から使うと大丈夫でした。 お礼が遅くなって申し訳ありませんでした。 専門用語がわかりずらかったです。 |
|
投稿日時: 2002-02-06 10:57
お役に立てて光栄です。
「XML文書内でDTDを定義する場合は、宣言の一部としてパラメータエンティティを使用することはできません。」とでも出してくれると分かりやすいかも知れませんね。 ちなみに宣言の一部として使えないだけで、完全な形の宣言にすれば使えます。 <!ENTITY % id "<!ELEMENT id (#PCDATA)>"> %id; こんな感じですが、要件には合わないですね。 と言うより、こんな使い方することがあるのかな? |
1