- PR -

パラメタエンティティ

1
投稿者投稿内容
tsuka
会議室デビュー日: 2002/02/03
投稿数: 3
投稿日時: 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 ]
やなぎ
会議室デビュー日: 2001/12/11
投稿数: 12
投稿日時: 2002-02-05 11:47
エラーメッセージどおり「内部サブセットのマークアップ宣言内ではパラメータ エンティティを使用できません。 」ので、要件からするとDTDを外出しするのが良いと思います。
tsuka
会議室デビュー日: 2002/02/03
投稿数: 3
投稿日時: 2002-02-05 20:26
やなぎさん、ありがとうございました。
外から使うと大丈夫でした。
お礼が遅くなって申し訳ありませんでした。
専門用語がわかりずらかったです。
やなぎ
会議室デビュー日: 2001/12/11
投稿数: 12
投稿日時: 2002-02-06 10:57
お役に立てて光栄です。
「XML文書内でDTDを定義する場合は、宣言の一部としてパラメータエンティティを使用することはできません。」とでも出してくれると分かりやすいかも知れませんね。
ちなみに宣言の一部として使えないだけで、完全な形の宣言にすれば使えます。
<!ENTITY % id "<!ELEMENT id (#PCDATA)>">
%id;
こんな感じですが、要件には合わないですね。
と言うより、こんな使い方することがあるのかな?
1

スキルアップ/キャリアアップ(JOB@IT)