Skip to content

info.xml violates the XSD element order — lint fails on development and every PR #1234

Description

@rubenvdlinde

quality / info.xml lint fails on development and therefore on every PR. The manifest violates the element order info.xsd requires.

Validated locally against the real schema (fetched from https://apps.nextcloud.com/schema/apps/info.xsd):

appinfo/info.xml:28: Element 'category': This element is not expected. Expected is one of ( licence, author ).

and, once that one is moved, two more appear behind it:

appinfo/info.xml:53:  Element 'php': This element is not expected. Expected is one of ( architecture, backend ).
appinfo/info.xml:112: Element 'repair-steps': This element is not expected. Expected is one of ( settings, activity, … ).

The canonical orders, extracted from the XSD

Top level:

id name summary description version licence author namespace types documentation
category website discussion bugs repository screenshot donation dependencies
background-jobs repair-steps two-factor-providers commands settings activity
dashboard fulltextsearch navigations contactsmenu collaboration openmetrics
sabre trash versions external-app

Inside <dependencies>:

php database command lib owncloud nextcloud architecture backend

What is out of order here

element is should be
category between licence and author after namespace
nextcloud before php after lib/owncloud
repair-steps after commands before commands
settings after navigations before navigations

⚠️ One thing to resolve first

<app> does not appear anywhere in that XSDgrep -c 'name="app"' returns 0 — yet <dependencies><app>openregister</app></dependencies> is load-bearing here, and the surrounding comment builds the whole min-version="32" argument on it (#1172).

So either the fetched schema is not the one the lint job uses, or <app> has never been schema-valid and the job is newly surfacing that. That question decides whether this is a reordering or something larger, and it should be answered before anyone moves elements around.

I attempted the reordering and backed it out for exactly that reason: rewriting a live manifest against a schema that contradicts the file's own documented dependency contract is not a change to make on the way past.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions