Dom get xml child nodes:取得内容が違う

DOM GET XML CHILD NODESを使ってXMLの

を取得してみたのですが
返ってきた値が違います。

"base PUBLIC “” “http://www.4d.com/dtd/2007/base.dtd

この様に返ってきます。 :frowning:

はタグのようなものなので,_XML DOCTYPE_の「値」は,その間にある部分であっているのではないでしょうか。

https://doc.4d.com/4Dv17R6/4D/17-R6/DOM-GET-XML-CHILD-NODES.301-4310713.ja.html

ライブラリのAPIも,

The name of DTD; i.e., the name immediately following the DOCTYPE keyword.

となっていて,DOCTYPEの直後の文字列がDTD名となっています。

https://xerces.apache.org/xerces-c/apiDocs-3/classDOMDocumentType.html#aff13ce9943531e3dd961961305e3bf9a

読んでみたのですが、よくわからないです。

私が指摘しているのは、「base SYSTEM」のところが「base PUBLIC “”」 となっている部分です。

SYSTEM と PUBLIC の違いですね,失礼しました。

https://www.kanzaki.com/docs/html/doctype.html

PUBLIC - これはこのDTDが公開されたものであること(続いて記述されるのが公開識別子であること)を示します。DTDが特定のマシン上にある場合はSYSTEMが使われます。

XLIFFのDTDは公開されているものなのに,どうしてSYSTEMとなっているのでしょう??

: Keisuke MIYAKO

https://www.kanzaki.com/docs/html/doctype.html

PUBLIC -
これはこのDTDが公開されたものであること(続いて記述されるのが公開識別子であること)を示します。DTDが特定のマシン上にある場合はSYST
Mが使われます。

XLIFFのDTDは公開されているものなのに,どうしてSYSTEMとなっているのでしょう??

もとのXMLデータはストラクチャをXMLで書き出したものなので開発部に聞いてください。 :mrgreen:
記述から特に整合性のチェックを行われているわけでもなさそうで、エラーにもならず普通にXMLからストラクチャは生成されました。

(資料)

再現コード

<code 4D>
EXPORT STRUCTURE($xml)
$dom:=DOM Parse XML variable($xml)

DOM GET XML CHILD NODES(DOM Get XML document ref($dom);$types;$nodes)

For ($i;1;Size of array($nodes))
$type:=$types{$i}
$node:=$nodes{$i}
Case of
: ($type=XML DOCTYPE)
ALERT($node)
End case
End for
</code 4D>

ACI0100457で報告しました。