[PHP-users 23024]Re: XML DOM処理で要素追加
Masayuki Ataka
ataka @ alchemedia.jp
2004年 8月 19日 (木) 19:38:21 JST
安高です。
再現しました。
外部dtdファイルは展開されますね。
[fileA.xml]
-------------------------------------------------
<?xml version = "1.0" encoding="UTF-8"?>
<!DOCTYPE test [
<!ENTITY % sample.dtd SYSTEM "sample.dtd">
%sample.dtd;
]>
<EL1>
<EL2>
<EL3>aaa</EL3>
<EL4>bbb</EL4>
</EL2>
<EL6>
<EL7>ddd</EL7>
</EL6>
</EL1>
-------------------------------------------------
[sample.dtd]
-------------------------------------------------
<!ENTITY aaa "testtest">
-------------------------------------------------
[出力結果]
-------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [
<!ENTITY % sample.dtd SYSTEM "sample.dtd">
<!ENTITY aaa "testtest">
]>
<EL1>
<EL2>
<EL3>aaa</EL3>
<EL4>bbb</EL4>
<EL5>ccc</EL5>
</EL2>
<EL6>
<EL7>ddd</EL7>
</EL6>
</EL1>
-------------------------------------------------
と、ここで気になったので、DOMに読み込んだ直後にechoしてみました。
[test2.php]
-------------------------------------------------
<?php
//fileA(更新する側)のDOM定義
$domA=domxml_open_file("fileA.xml");
echo "<PRE>";
$xmlfile = $domA->dump_mem(true);
echo htmlentities($xmlfile);
echo "</PRE>";
?>
-------------------------------------------------
[出力結果]
-------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [
<!ENTITY % sample.dtd SYSTEM "sample.dtd">
<!ENTITY aaa "testtest">
]>
<EL1>
<EL2>
<EL3>aaa</EL3>
<EL4>bbb</EL4>
</EL2>
<EL6>
<EL7>ddd</EL7>
</EL6>
</EL1>
-------------------------------------------------
上記結果からすると、「DOMに読み込んだ段階」で展開されるようです。
勉強も兼ねてもう少し調べてみます。
河野さんも何かわかったらお教えください。
"Hitoshi Kawano" <kawano @ topics.or.jp> wrote:
> 河野です。
>
> Ushiroさん、安高さんありがとうございます。
>
> $doc = domxml_open_file("fileA.xml");
> で読めました。
>
> エンティティですが、次のようなサンプルになります。
> <!DOCTYPE test [
> <!ENTITY % sample.dtd SYSTEM "../DTD/sample.dtd">
> %sample.dtd;
> ]>
> ここで、sample.dtdが展開されてしまうのですが、もしおわかりでしたら
> 教えてください。
>
> > > fileA.xmlの先頭にエンティティ宣言があるのですが、そこにある
> > > DTDがエレメントの置き換えを行った後、展開されてしまいます。
> > > この展開をしないようにするにはどうすればいいのでしょうか?
> >
> > 以下のような感じで先日のテストスクリプト([PHP-users 23010])で実験
> > してみましたが(php4.3.4)、展開はされませんでした。
> >
> > [fileA.xml]
> > -------------------------------------------------
> > <?xml version = "1.0" encoding="UTF-8"?>
> > <!DOCTYPE test [
> > <!ENTITY aaa SYSTEM "fileC.xml">
> > <!ENTITY bbb "hello">
> > ]>
> > <EL1>
> > <EL2>
> > <EL3>&aaa;</EL3>
> > <EL4>&bbb;</EL4>
> > </EL2>
> > <EL6>
> > <EL7>ddd</EL7>
> > </EL6>
> > </EL1>
> > -------------------------------------------------
> >
> > [fileB.xml]
> > -------------------------------------------------
> > <?xml version = "1.0" encoding="UTF-8"?>
> > <!DOCTYPE test [
> > <!ENTITY aaa SYSTEM "fileC.xml">
> > <!ENTITY bbb "hello">
> > ]>
> > <EL1>
> > <EL2>
> > <EL3>&aaa;</EL3>
> > <EL4>&bbb;</EL4>
> > <EL5>&bbb;</EL5>
> > </EL2>
> > </EL1>
> > -------------------------------------------------
> >
> >
> > [fileC.xml]
> > -------------------------------------------------
> > <?xml version = "1.0" encoding="UTF-8"?>
> > <TT>
> > <XX>ENT</XX>
> > </TT>
> > -------------------------------------------------
> >
> > [出力結果]
> > -------------------------------------------------
> > <?xml version="1.0" encoding="UTF-8"?>
> > <!DOCTYPE test [
> > <!ENTITY aaa SYSTEM "fileC.xml">
> > <!ENTITY bbb "hello">
> > ]>
> > <EL1>
> > <EL2>
> > <EL3>&aaa;</EL3>
> > <EL4>&bbb;</EL4>
> > <EL5>&bbb;</EL5>
> > </EL2>
> > <EL6>
> > <EL7>ddd</EL7>
> > </EL6>
> > </EL1>
> > -------------------------------------------------
> >
> > こういうことではなくて?
> > もう少し具体的なサンプルがあるとわかりいいかもしれません。
>
> _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/☆彡
> 河野 仁(Hitoshi Kawano)
> E-Mail:kawano @ topics.or.jp
> _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/
>
> _______________________________________________
> PHP-users mailing list PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
_______________________________________________________
Masayuki Ataka
e-mail:ataka @ alchemedia.jp
TEL [81] 3-3560-5678 Ext.304
ALCHEMEDIA INC.
Kimbun Bldg. 5F
6-14-3 Akasaka Minato-ku
Tokyo, JAPAN 107-0052
PHP-users メーリングリストの案内