Skip to content

CI: check .xml structure drift against doc-en#1514

Merged
saundefined merged 1 commit into
php:masterfrom
lacatoire:ci/check-xml
Jul 8, 2026
Merged

CI: check .xml structure drift against doc-en#1514
saundefined merged 1 commit into
php:masterfrom
lacatoire:ci/check-xml

Conversation

@lacatoire

@lacatoire lacatoire commented Jul 7, 2026

Copy link
Copy Markdown
Member

Adds a structure check: on every PR it verifies that the block skeleton of the changed .xml files stays a mirror of doc-en (same <note>, same lists). Inline prose (<para>, <title>...) is not compared, as it legitimately differs between languages.

Each file is compared to doc-en at the revision it declares (EN-Revision), so lagging files do not raise false positives. It only needs a checkout of doc-en, no doc-base.

The same check already runs on php/doc-fr and php/doc-es:
https://github.com/php/doc-fr/blob/master/.github/workflows/check-xml.yml

The script skips translator credits (authorgroup xml:id="translators..."). To make it warn only, change the final exit to exit 0.

A shared translation toolchain is being built in php/doc-base so every language can get these checks from a single place. Until that lands, this workflow is a useful stopgap: it is fully self-contained (doc-en checkout only) and provides the check today.

@lacatoire
lacatoire requested a review from a team as a code owner July 7, 2026 13:21
@lacatoire lacatoire changed the title CI: проверка расхождения структуры .xml с doc-en CI: check .xml structure drift against doc-en Jul 7, 2026
@alfsb

alfsb commented Jul 7, 2026

Copy link
Copy Markdown
Member

I have done something similar in https://github.com/php/doc-base/tree/master/scripts/translation . It still does not filter out outdated files, but I'm working on it. It only counts tags between two files, but this suffices in most cases.

It also has some features, so each translator can annotate and ignore changes that they are not interested. These annotations are local, so they will not work on CI.

About undefined DTD entities, a simple str_replace from & into &amp; suffices to load XML files and inspect the XML elements, per file.

@saundefined
saundefined merged commit 5639aaf into php:master Jul 8, 2026
3 checks passed
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.

3 participants