...
| Group | Check | Result if it fails |
|---|---|---|
| Archive | ZIP opens and every entry passes its CRC | ERROR |
| Archive | No encrypted entries and no duplicate entry names | ERROR |
| Archive | No absolute paths, .. traversal, backslashes or control characters in entry names | ERROR |
| Archive | PriorityDocumentIndex.xml present at the ZIP root, with exact casing | ERROR |
| Index | Well-formed XML, parsed with entity expansion and network access disabled | ERROR |
| Index | No DOCTYPE and no XML entity references | ERROR |
| Index | Root element is pde:PriorityDocumentIndex | ERROR |
| Index | Valid against ST92PDDPIndex_V2_0.xsd | ERROR |
| Index | Document categories match IPRightKindCategory | ERROR |
| Index | Mandatory documents present: priority document PDF (all types), certification page and representation (designs, trademarks) | ERROR |
| Index | Patent package without a separate certification page (it must then be part of the priority document PDF) | advisory |
| Index | Supplementary document category is one of the values ST.92 recommends for the IP right type. Mandatory categories are a closed enumeration enforced by the schema, but supplementary ones are declared as a union with xsd:token, so the schema accepts any value and a typo would otherwise pass unnoticed | advisory |
| Index | ApplicationFilingDate and DocumentDate parse and are not in the future | ERROR |
| Index | ZIP name <Kind>_<Office>_<Number>_<YYYYMMDD>.zip matches the index | ERROR / advisory |
| References | Every file listed in the index exists in the ZIP | ERROR |
| References | com:FileName contains no path component | ERROR |
| References | DocumentLocationURI is relative and does not escape the package | ERROR |
| References | Mandatory documents live under MandatoryArtifacts/, supplementary under SupplementaryArtifacts/ | ERROR |
| References | DocumentLocationURI is an external URL; file in the ZIP not listed in the index; one file referenced by several entries | advisory |
| Content | No empty files | ERROR |
| Content | Declared DocumentFileFormatCategory matches both the file extension and the actual bytes | ERROR |
| Content | File content matches its extension (PDF, PNG, JPEG, WAV, MP3, STL, ZIP, TAR, XML) | ERROR |
| Content | PDF structure: header, startxref, %%EOF, /Root | ERROR |
| Content | PNG structure: per-chunk CRCs, IHDR/IDAT/IEND present, non-zero dimensions | ERROR |
| Content | WAV structure: RIFF size agrees with the file, fmt and data chunks present and in bounds | ERROR |
| Content | STL structure: facet / loop / vertex counts agree (ASCII) or size matches the triangle count (binary) | ERROR |
| Content | Zipped artifacts open, are unencrypted and CRC-clean | ERROR |
| Content | PageTotalQuantity matches the PDF page count; DocumentSizeQuantity matches the real byte size | advisory |
| Content | Internal XML is well-formed | ERROR |
| Content | Supplementary artifacts valid against the published ST.96 V9.0 schemas | ERROR |
| Content | ST.26 sequence listings valid against the ST.26 DTD | ERROR |
| Content | ST.26 cross-checks: fileName, SequenceTotalQuantity, sequenceIDNumber runs 1..n, INSDSeq_length matches the sequence | ERROR |
| Content | ST.26 characters within the Annex IV Basic Latin subset | advisory |
...
| Note | ||
|---|---|---|
| ||
Bibliographic and classification data are now validated against the published ST.96 V9.0 schemas, not just checked for well-formedness. Note that these documents belong to the per-right ST.96 namespaces, not to Common: The trimmed |
| Info | ||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||
Note that |
Example output
| Code Block | ||
|---|---|---|
| ||
>>>> .venv/bin/python validate_pddp.py -v ./output/Patent_IB_PCT-IB2026-134592_20260103.zip
ST.92 schema: https://www.wipo.int/standards/XMLSchema/ST92/V2_0/ST92PDDPIndex_V2_0.xsd
ST.96 schema: https://www.wipo.int/standards/en/st96/v9-0/annex-iii/ST96XMLSchema_V9_0_Flattened.zip
Mode: strict
[OK] Patent_IB_PCT-IB2026-134592_20260103.zip
ok ZIP integrity OK
ok 11 ZIP entr(ies), all names safe and unique
ok PriorityDocumentIndex.xml valid against the ST.92 V2.0 schema
ok Document categories consistent with 'Patent'
ok Mandatory documents present: ['Certification page', 'Priority document PDF', 'Sequence listing']
ok ZIP file name consistent with index
ok All 7 referenced files resolved
ok MandatoryArtifacts/..._PriorityDocument.pdf: PDF OK (2,847 bytes, 3 page(s))
ok MandatoryArtifacts/..._SequenceListing_ST26.xml: valid against the ST.26 DTD
ok SupplementaryArtifacts/..._BibliographicData.xml: valid against ST.96 V9.0 (BibliographicData_V9_0.xsd)
ok SupplementaryArtifacts/..._ClassificationData.xml: valid against ST.96 V9.0 (Patent_V9_0.xsd)
1 package(s) checked: 1 passed, 0 failed.
Without -v only problems are listed:
>>>> .venv/bin/python validate_pddp.py ./received/
[FAIL] Patent_XX_1234567_20260101.zip
ERROR MandatoryArtifacts/doc.pdf: declared format 'PNG' does not match extension '.pdf' (expected ['.png'])
ERROR SupplementaryArtifacts/bib.xml ST.96: line 11: Element 'InventionTitle': This element is not expected. Expected is ( InventionTitleBag ).
1 package(s) checked: 0 passed, 1 failed. |
...