Skip to content

Conversation

@KentarouTakeda
Copy link
Collaborator

概要

libxmlのバージョンにより、日本語ドキュメントのビルドが必ず失敗するのを修正しました。

詳細

修正前のXML宣言は:

<?xml version="2.0" encoding="utf-8"?>

このように書かれていました。しかし:

以上の通り バージョン番号として有効なのは現在 1.01.1 のみ です。

この誤記は、phpにリンクされたlibxmlのバージョンが比較的古い場合は問題にはなりません。GitHub Actions上のPHPも 2.9.14 という2年ほど前にリリースされたバージョンが使われているため、まだエラーには至っていません。

しかし、これら誤ったバージョン表記に対し、libxml側では1年ほど前にエラーチェックが実装されました。以降のバージョンでは、冒頭のような誤った書き方は次のエラーメッセージと共にパース失敗します:

$ php doc-base/configure.php --with-lang=ja >/dev/null

ERROR (file:////Users/k-takeda/src/oss/php-doc/ja/reference/win32service/functions/win32-create-service.xml:1:39)
<?xml version="2.0" encoding="utf-8"?>
---------------------------------------^
 Version mismatch between document and entity


Previous errors too severe. Stopping here.

Version mismatch between document and entity

これはlibxmlからの出力です。リンクされたバージョンは次のとおりです:

$ php -i | grep -A 10 ^dom
dom

DOM/XML => enabled
DOM/XML API Version => 20031129
libxml Version => 2.13.4
HTML Support => enabled
XPath Support => enabled
XPointer Support => enabled
Schema Support => enabled
RelaxNG Support => enabled

日本語訳で "2.0"とされた理由は不明ですが、オリジナルの英語版では、初版より一貫して"1.0"と宣言されています。

それに習うことで、上述の環境でビルド成功することを確認しました。

補足

現在、このリポジトリや php/doc-base のCIでは、これとは別の原因で日本語を含む幾つかのマルチバイト言語圏のビルドがエラーを出力しています。これらはPull Requestで言及されているlibxmlの最新バージョンでは発生せず、全ファイル、ビルド成功します。

Copy link
Contributor

@youkidearitai youkidearitai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ありがとうございます!こちら取り込みます。

@youkidearitai youkidearitai merged commit cb4569b into php:master Oct 31, 2024
1 check failed
@KentarouTakeda KentarouTakeda deleted the fix-invalid-xml-declaration branch October 31, 2024 15:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants