diff --git a/.github/workflows/trigger-increment-workflow.yml b/.github/workflows/trigger-increment-workflow.yml
new file mode 100644
index 00000000..9cf87fd6
--- /dev/null
+++ b/.github/workflows/trigger-increment-workflow.yml
@@ -0,0 +1,34 @@
+name: Trigger increment action in webapp-server
+
+on:
+ push:
+ branches:
+ [ integration ]
+ paths:
+ - 'PDF_UA/**'
+ - '!PDF_UA/1/**'
+ - '!PDF_UA/2/**'
+
+jobs:
+ trigger_build:
+ if: github.repository == 'veraPDF/veraPDF-validation-profiles'
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ submodules: true
+ - name: Set up JDK 1.11
+ uses: actions/setup-java@v1
+ with:
+ java-version: 1.11
+ - name: Create workflow dispatch
+ uses: actions/github-script@v6
+ with:
+ github-token: ${{ secrets.WORKFLOW_TOKEN }}
+ script: |
+ await github.rest.actions.createWorkflowDispatch({
+ owner: 'veraPDF',
+ repo: 'verapdf-webapp-server',
+ workflow_id: 'version-auto-increment.yml',
+ ref: 'master'
+ })
diff --git a/.github/workflows/update-PDFA-profiles-workflow.yml b/.github/workflows/update-PDFA-profiles-workflow.yml
new file mode 100644
index 00000000..50ad4453
--- /dev/null
+++ b/.github/workflows/update-PDFA-profiles-workflow.yml
@@ -0,0 +1,52 @@
+name: Update PDF_A profiles
+
+on:
+ push:
+ branches:
+ [ integration ]
+ paths:
+ - 'PDF_A/1a/**'
+ - 'PDF_A/1b/**'
+ - 'PDF_A/2a/**'
+ - 'PDF_A/2b/**'
+ - 'PDF_A/2u/**'
+ - 'PDF_A/3a/**'
+ - 'PDF_A/3b/**'
+ - 'PDF_A/3u/**'
+ - 'PDF_A/4/**'
+ - 'PDF_A/4e/**'
+ - 'PDF_A/4f/**'
+
+jobs:
+ update-profiles:
+ if: github.repository == 'veraPDF/veraPDF-validation-profiles'
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ submodules: true
+ token: ${{ secrets.WORKFLOW_TOKEN }}
+ - name: Set up JDK 1.11
+ uses: actions/setup-java@v1
+ with:
+ java-version: 1.11
+ - name: Generate PDF_A profiles
+ run: |
+ curl -LO https://raw.githubusercontent.com/veraPDF/veraPDF-tools/master/profile-merger/profile-merger-1.0-SNAPSHOT.jar
+ java -jar profile-merger-1.0-SNAPSHOT.jar pdfa
+ rm profile-merger-1.0-SNAPSHOT.jar
+ git pull origin
+ - name: Push PDF_A profiles
+ uses: stefanzweifel/git-auto-commit-action@v5
+ with:
+ commit_message: ${{ github.event.head_commit.message }}
+
+ - name: Notify slack if action didn't run
+ if: failure()
+ env:
+ SLACK_BOT_TOKEN: ${{ secrets.SLACK_NOTIFICATIONS_BOT_TOKEN }}
+ uses: voxmedia/github-action-slack-notify-build@v1
+ with:
+ channel_id: C03E3JJGLQL
+ status: FAILED
+ color: danger
diff --git a/.github/workflows/update-PDFUA-profiles-workflow.yml b/.github/workflows/update-PDFUA-profiles-workflow.yml
new file mode 100644
index 00000000..4f181410
--- /dev/null
+++ b/.github/workflows/update-PDFUA-profiles-workflow.yml
@@ -0,0 +1,45 @@
+name: Update PDF_UA profiles
+
+on:
+ push:
+ branches:
+ [ integration ]
+ paths:
+ - 'PDF_UA/1/**'
+ - 'PDF_UA/2/**'
+ - 'PDF_UA/WCAG/**'
+ - 'PDF_UA/ISO-32005-Tagged.xml'
+
+jobs:
+ update-profiles:
+ if: github.repository == 'veraPDF/veraPDF-validation-profiles'
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ submodules: true
+ token: ${{ secrets.WORKFLOW_TOKEN }}
+ - name: Set up JDK 1.11
+ uses: actions/setup-java@v1
+ with:
+ java-version: 1.11
+ - name: Generate PDF_UA profiles
+ run: |
+ curl -LO https://raw.githubusercontent.com/veraPDF/veraPDF-tools/master/profile-merger/profile-merger-1.0-SNAPSHOT.jar
+ java -jar profile-merger-1.0-SNAPSHOT.jar pdfua
+ rm profile-merger-1.0-SNAPSHOT.jar
+ git pull origin
+ - name: Push PDF_UA profiles
+ uses: stefanzweifel/git-auto-commit-action@v5
+ with:
+ commit_message: ${{ github.event.head_commit.message }}
+
+ - name: Notify slack if action didn't run
+ if: failure()
+ env:
+ SLACK_BOT_TOKEN: ${{ secrets.SLACK_NOTIFICATIONS_BOT_TOKEN }}
+ uses: voxmedia/github-action-slack-notify-build@v1
+ with:
+ channel_id: C03E3JJGLQL
+ status: FAILED
+ color: danger
diff --git a/.github/workflows/update-library-PDFA-profiles-workflow.yml b/.github/workflows/update-library-PDFA-profiles-workflow.yml
new file mode 100644
index 00000000..1d519530
--- /dev/null
+++ b/.github/workflows/update-library-PDFA-profiles-workflow.yml
@@ -0,0 +1,54 @@
+name: Update PDF_A profiles in veraPDF-library
+
+on:
+ push:
+ branches:
+ [ integration ]
+ paths:
+ - 'PDF_A/**'
+ - '!PDF_A/1a/**'
+ - '!PDF_A/1b/**'
+ - '!PDF_A/2a/**'
+ - '!PDF_A/2b/**'
+ - '!PDF_A/2u/**'
+ - '!PDF_A/3a/**'
+ - '!PDF_A/3b/**'
+ - '!PDF_A/3u/**'
+ - '!PDF_A/4/**'
+ - '!PDF_A/4e/**'
+ - '!PDF_A/4f/**'
+
+jobs:
+ update-profiles:
+ if: github.repository == 'veraPDF/veraPDF-validation-profiles'
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ submodules: true
+ - name: Set up JDK 1.11
+ uses: actions/setup-java@v1
+ with:
+ java-version: 1.11
+
+ - name: Commit to veraPDF-library
+ uses: drud/action-cross-commit@master
+ with:
+ source-folder: PDF_A
+ destination-repository: https://veraPDF:${{ secrets.WORKFLOW_TOKEN }}@github.com/veraPDF/veraPDF-library
+ destination-folder: core/src/main/resources/org/verapdf/pdfa/validation
+ destination-branch: integration
+ git-user: "Git User"
+ git-commit-message: ${{ github.event.head_commit.message }}
+ git-commit-sign-off: "false"
+ excludes: 1a:1b:2a:2b:2u:3a:3b:3u:4:4e:4f:PDFUA-1.xml:PDFUA-2-ISO32005.xml:validationProfile.xsd
+
+ - name: Notify slack if library wasn't updated
+ if: failure()
+ env:
+ SLACK_BOT_TOKEN: ${{ secrets.SLACK_NOTIFICATIONS_BOT_TOKEN }}
+ uses: voxmedia/github-action-slack-notify-build@v1
+ with:
+ channel_id: C03E3JJGLQL
+ status: FAILED
+ color: danger
diff --git a/.github/workflows/update-library-PDFUA-profiles-workflow.yml b/.github/workflows/update-library-PDFUA-profiles-workflow.yml
new file mode 100644
index 00000000..421cf664
--- /dev/null
+++ b/.github/workflows/update-library-PDFUA-profiles-workflow.yml
@@ -0,0 +1,44 @@
+name: Update PDF_UA profiles in veraPDF-library
+
+on:
+ push:
+ branches:
+ [ integration ]
+ paths:
+ - 'PDF_UA/PDFUA-1.xml'
+ - 'PDF_UA/PDFUA-2-ISO32005.xml'
+
+jobs:
+ update-files:
+ if: github.repository == 'veraPDF/veraPDF-validation-profiles'
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ submodules: true
+ - name: Set up JDK 1.11
+ uses: actions/setup-java@v1
+ with:
+ java-version: 1.11
+
+ - name: Commit to veraPDF-library
+ uses: drud/action-cross-commit@master
+ with:
+ source-folder: PDF_UA
+ destination-repository: https://veraPDF:${{ secrets.WORKFLOW_TOKEN }}@github.com/veraPDF/veraPDF-library
+ destination-folder: core/src/main/resources/org/verapdf/pdfa/validation
+ destination-branch: integration
+ git-user: "Git User"
+ git-commit-message: ${{ github.event.head_commit.message }}
+ git-commit-sign-off: "false"
+ excludes: 1:2:WCAG:ISO-32000-1-Tagged.xml:ISO-32000-2-Tagged.xml:PDFUA-2.xml:ISO-32005-Tagged.xml:WCAG-2-2.xml:WCAG-2-2-Machine.xml:WCAG-2-2-Complete.xml:WCAG-2-2-Dev.xml:PDFA-1A.xml:PDFA-1B.xml:PDFA-2A.xml:PDFA-2B.xml:PDFA-2U.xml:PDFA-3A.xml:PDFA-3B.xml:PDFA-3U.xml:PDFA-4.xml:PDFA-4E.xml:PDFA-4F.xml:validationProfile.xsd
+
+ - name: Notify slack if library wasn't updated
+ if: failure()
+ env:
+ SLACK_BOT_TOKEN: ${{ secrets.SLACK_NOTIFICATIONS_BOT_TOKEN }}
+ uses: voxmedia/github-action-slack-notify-build@v1
+ with:
+ channel_id: C03E3JJGLQL
+ status: FAILED
+ color: danger
diff --git a/PDF_A/1a/6.3 Fonts/6.3.8 Unicode character maps/verapdf-profile-6-3-8-t01.xml b/PDF_A/1a/6.3 Fonts/6.3.8 Unicode character maps/verapdf-profile-6-3-8-t01.xml
new file mode 100644
index 00000000..ae98d368
--- /dev/null
+++ b/PDF_A/1a/6.3 Fonts/6.3.8 Unicode character maps/verapdf-profile-6-3-8-t01.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2008 - 6.3 Fonts - 6.3.8 Unicode character maps
+ The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values,
+ as described in PDF Reference 5.9, unless the font meets any of the following three conditions:
+ (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps;
+ (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D;
+ (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 or Adobe-Korea1 character collections
+
+
+
+
+
+ The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values,
+ as described in PDF Reference 5.9, unless the font meets any of the following three conditions:
+ (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps;
+ (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D;
+ (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 or Adobe-Korea1 character collections
+ toUnicode != null
+
+ The font does not define Unicode character map
+
+
+
+
+
+
+
diff --git a/PDF_A/1a/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml b/PDF_A/1a/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml
new file mode 100644
index 00000000..df1e519f
--- /dev/null
+++ b/PDF_A/1a/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema.
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A
+
+
+
+
+
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A
+ conformance == "A"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1a conforming file
+
+ conformance
+
+
+
+
+
+
+
diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/6.8.2.2 Mark information dictionary/verapdf-profile-6-8-2-2-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/6.8.2.2 Mark information dictionary/verapdf-profile-6-8-2-2-t01.xml
new file mode 100644
index 00000000..a8d0525a
--- /dev/null
+++ b/PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/6.8.2.2 Mark information dictionary/verapdf-profile-6-8-2-2-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-1:2005 - 6.8.2 Tagged PDF - 6.8.2.2 Mark information dictionary - Marked entry
+ The document catalog dictionary shall include a MarkInfo dictionary with a Marked entry in it, whose value shall be true
+
+
+
+
+
+ The document catalog dictionary shall include a MarkInfo dictionary with a Marked entry in it, whose value shall be true
+ Marked == true
+
+ MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or
+ is not present in the MarkInfo dictionary (MarkInfo = %1, Marked = %2)
+
+ MarkInfo
+ Marked
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.3 Structure hierarchy/verapdf-profile-6-8-3-3-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.3 Structure hierarchy/verapdf-profile-6-8-3-3-t01.xml
new file mode 100644
index 00000000..c3a99f3e
--- /dev/null
+++ b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.3 Structure hierarchy/verapdf-profile-6-8-3-3-t01.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 19005-1:2005 - 6.8.3 Artifacts - 6.8.3.3 Structure hierarchy - StructTreeRoot
+ The logical structure of the conforming file shall be described by a structure hierarchy rooted in the
+ StructTreeRoot entry of the document catalog dictionary, as described in PDF Reference 9.6
+
+
+
+
+
+ The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document catalog dictionary, as described in PDF Reference 9.6
+ StructTreeRoot_size == 1
+
+ StructTreeRoot entry is not present in the document catalog
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t01.xml
new file mode 100644
index 00000000..1cc5d1cd
--- /dev/null
+++ b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-1:2005 - 6.8.3 Artifacts - 6.8.3.4 Structure types - Standard roles
+ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as
+ defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root
+
+
+
+
+
+ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as
+ defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root
+ isNotMappedToStandardType == false
+
+ Non-standard structure type %1 is not mapped to a standard type
+
+ valueS
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t02.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t02.xml
new file mode 100644
index 00000000..44857ef4
--- /dev/null
+++ b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t02.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-1:2005 - 6.8.3 Artifacts - 6.8.3.4 Structure types - Circular mapping
+ A circular mapping shall not exist
+
+
+
+
+
+ A circular mapping shall not exist
+ circularMappingExist != true
+
+ A circular mapping exists for %1 structure type
+
+ valueS
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml
new file mode 100644
index 00000000..d2782eef
--- /dev/null
+++ b/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml
@@ -0,0 +1,30 @@
+
+
+
+ ISO 19005-1:2005 - 6.8.4 Natural language specification
+ If the Lang entry is present in the document catalog dictionary or in a structure element
+ dictionary or property list, its value shall be a language identifier as defined by RFC 1766, Tags for the
+ Identification of Languages, as described in PDF Reference 9.8.1
+
+
+
+
+
+ If the Lang entry is present in the document catalog dictionary or in a structure element
+ dictionary or property list, its value shall be a language identifier as defined by RFC 1766, Tags for
+ the Identification of Languages, as described in PDF Reference 9.8.1
+ unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z]{1,8})*$/.test(unicodeValue)
+
+ Value %1 of the Lang entry is not a Language-Tag
+
+ unicodeValue
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1 File structure.xml b/PDF_A/1b/6.1 File structure/6.1 File structure.xml
deleted file mode 100644
index 8bc9c382..00000000
--- a/PDF_A/1b/6.1 File structure/6.1 File structure.xml
+++ /dev/null
@@ -1,230 +0,0 @@
-
-
- File structure profile
- Requirements of PDF/A standard for File structure subsection
- Evgeniy Muravitskiy
- 2015-05-8T15:46:15Z
- sha-1 hash code
-
-
- PDF header must comply PDF/A specification
- pdfHeaderCompliesPDFA
-
- File header not compliant with PDF/A
-
-
- ISO19005-1
- 6.1.2
-
-
-
- Second line of the document is a comment with at least 4 symbols in the code range 128-255 as required by PDF/A standard
- binaryHeaderCompliesPDFA
-
- File header not compliant with PDF/A
-
-
- ISO19005-1
- 6.1.2
-
-
-
- Hexadecimal strings shall contain an even number of non-white-space characters
- (isHex != true) || origLength % 2 == 0
-
- Hexadecimal string contains odd number of non-white-space characters
- origLength
-
-
- ISO19005-1
- 6.1.6
-
-
-
- All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f.
- (isHex != true) || isHexSymbols
-
- Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f.
- isHexSymbols
-
-
- ISO19005-1
- 6.1.6
-
-
-
- Length of stream must match with value of the Length key
- isLengthCorrect
-
- Length of the stream does not match the value of the Length key
- length
-
-
- ISO19005-1
- 6.1.7
-
-
-
- Spacings for 'stream' and 'endstream' keywords must comply PDF/A specification
- spacingComplyPDFA
-
- Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification
-
-
- ISO19005-1
- 6.1.7
-
-
-
- Header of 'object' and 'endobj' tags must comply PDF/A
- spacingComplyPDFA
-
- Spacings of keywords 'obj' and 'endobj' do not comply PDF/A specification
-
-
- ISO19005-1
- 6.1.8
-
-
-
- The LZWDecode filter shall not be permitted.
- filters.indexOf("LZWDecode") == -1
-
- LZW compression is used
- filters
-
-
- ISO19005-1
- 6.1.10
-
-
-
- Max value of integer must be 2147483647
- intValue < 2147483648
-
- Integer value out of range
- intValue
-
-
- ISO19005-1
- 6.1.12
-
- PDF Reference 1.4
- Table C.1
-
-
-
-
- Min value of integer must be -2147483648
- intValue > -2147483649
-
- Integer value out of range
- intValue
-
-
- ISO19005-1
- 6.1.12
-
- PDF Reference 1.4
- Table C.1
-
-
-
-
- Absolute real value must be less than or equal to 32767
- realValue >= -32767 && realValue <= 32767
-
- Real value out of range
- realValue
-
-
- ISO19005-1
- 6.1.12
-
- PDF Reference 1.4
- Table C.1
-
-
-
-
- Maximum length of string in bytes 65535
- origValue.length < 65536
-
- Maximum length of a String (65535) is exceeded
- origValue.length()
-
-
- ISO19005-1
- 6.1.12
-
- PDF Reference 1.4
- Table C.1
-
-
-
-
- Length of name in bytes must be less than 128
- origLength < 128
-
- Maximum length of a Name (127) is exceeded
- origLength
-
-
- ISO19005-1
- 6.1.12
-
- PDF Reference 1.4
- Table C.1
-
-
-
-
- Maximum capacity of array in elements less than 8192
- size < 8192
-
- Array contains more than 8192 elements
- size
-
-
- ISO19005-1
- 6.1.12
-
- PDF Reference 1.4
- Table C.1
-
-
-
-
- Maximum capacity of dictionary in entries less than 4095
- size < 4096
-
- Dictionary contains more than 4095 elements
- size
-
-
- ISO19005-1
- 6.1.12
-
- PDF Reference 1.4
- Table C.1
-
-
-
-
- Maximum number of indirect objects must be less than 8388608
- nrIndirects < 8388608
-
- Maximum number of indirect objects (8,388,607) in PDF file is exceeded
- nrIndirects
-
-
- ISO19005-1
- 6.1.12
-
- PDF Reference 1.4
- Table C.1
-
-
-
-
-
diff --git a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml
index 47ac06d0..e9954af8 100644
--- a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml
@@ -1,21 +1,23 @@
-
-
- ISO 19005-1:2005 - 6.1.10 Filters - LZW
- The LZWDecode filter shall not be permitted
- veraPDF Consortium
- 2015-05-8T15:46:15Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.1.10 Filters - LZW
+ The LZWDecode filter shall not be permitted
+
+
-
- The LZWDecode filter shall not be permitted
- filters.indexOf("LZWDecode") == -1
-
- LZW compression is used
-
-
- ISO19005-1
- 6.1.10
-
-
-
+
+
+ The LZWDecode filter shall not be permitted
+ internalRepresentation != "LZWDecode"
+
+ Unknown or not permitted Stream filter %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml
new file mode 100644
index 00000000..e50f35da
--- /dev/null
+++ b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-1:2005 - 6.1.10 Filters - LZW
+ The LZWDecode filter shall not be permitted
+
+
+
+
+
+ The LZWDecode filter shall not be permitted
+ internalRepresentation != "LZWDecode" && internalRepresentation != "LZW"
+
+ LZW compression is used in the inline image
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t01.xml b/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t01.xml
new file mode 100644
index 00000000..670b9106
--- /dev/null
+++ b/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.1.11 Embedded files - File specification dictionary
+ A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key
+
+
+
+
+
+ A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key
+ containsEF == false
+
+ A file specification dictionary contains the EF key
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml b/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml
new file mode 100644
index 00000000..a1429c8f
--- /dev/null
+++ b/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.1.11 Embedded files - EmbeddedFiles tree
+ A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key
+
+
+
+
+
+ A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key
+ containsEmbeddedFiles == false
+
+ The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary)
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t01.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t01.xml
index 6952a9ca..9a888ac5 100644
--- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t01.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t01.xml
@@ -1,25 +1,25 @@
-
-
- ISO 19005-1:2005 - 6.1.12 Implementation limits - Integer
- Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648
- veraPDF Consortium
- 2015-05-8T15:46:15Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - Integer
+ Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648
+
+
-
+
+
Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648
(intValue <= 2147483647) && (intValue >= -2147483648)
- Integer value out of range
+ Integer value %1 out of range
+
+ intValue
+
-
- ISO19005-1
- 6.1.12
-
- PDF Reference 1.4
- Table C.1
-
-
+
+
+
-
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t02.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t02.xml
index 01d64ef6..b0cb29f9 100644
--- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t02.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t02.xml
@@ -1,25 +1,25 @@
-
-
- ISO 19005-1:2005 - 6.1.12 Implementation limits - Real
- Largest and smallest real values are +/-32767.0
- veraPDF Consortium
- 2015-05-8T15:46:15Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - Real
+ Largest and smallest real values are +/-32767.0
+
+
-
+
+
Absolute real value must be less than or equal to 32767.0
(realValue >= -32767.0) && (realValue <= 32767.0)
- Real value out of range
+ Real value %1 out of range
+
+ realValue
+
-
- ISO19005-1
- 6.1.12
-
- PDF Reference 1.4
- Table C.1
-
-
+
+
+
-
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t03.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t03.xml
index 13ff5aec..82a734e2 100644
--- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t03.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t03.xml
@@ -1,25 +1,25 @@
-
-
- ISO 19005-1:2005 - 6.1.12 Implementation limits - String
- Maximum length of a string (in bytes) is 65535
- veraPDF Consortium
- 2015-05-8T15:46:15Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - String
+ Maximum length of a string (in bytes) is 65535
+
+
-
+
+
Maximum length of a string (in bytes) is 65535
value.length() < 65536
- Maximum length of a String (65535) exceeded
+ String length (%1) exceeded 65535
+
+ value.length()
+
-
- ISO19005-1
- 6.1.12
-
- PDF Reference 1.4
- Table C.1
-
-
+
+
+
-
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t04.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t04.xml
index bbc97214..e054928f 100644
--- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t04.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t04.xml
@@ -1,26 +1,25 @@
-
-
- ISO 19005-1:2005 - 6.1.12 Implementation limits - Name
- Maximum length of a name (in bytes) is 127
- veraPDF Consortium
- 2015-05-8T15:46:15Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - Name
+ Maximum length of a name (in bytes) is 127
+
+
-
+
+
Maximum length of a name (in bytes) is 127
- origLength <= 127
+ internalRepresentation.length() <= 127
- Maximum length of a Name (127) exceeded
- origLength
+ Name length (%1) exceeded 127
+
+ internalRepresentation.length()
+
-
- ISO19005-1
- 6.1.12
-
- PDF Reference 1.4
- Table C.1
-
-
+
+
+
-
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t05.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t05.xml
index 77a2c8b7..a7951de5 100644
--- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t05.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t05.xml
@@ -1,25 +1,25 @@
-
-
- ISO 19005-1:2005 - 6.1.12 Implementation limits - Array
- Maximum capacity of an array (in elements) is 8191
- veraPDF Consortium
- 2015-05-8T15:46:15Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - Array
+ Maximum capacity of an array (in elements) is 8191
+
+
-
+
+
Maximum capacity of an array (in elements) is 8191
size <= 8191
- Maximum capacity of an array (8191) exceeded
+ Array capacity (%1) exceeded 8191
+
+ size
+
-
- ISO19005-1
- 6.1.12
-
- PDF Reference 1.4
- Table C.1
-
-
+
+
+
-
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t06.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t06.xml
index dac8ce02..ca7d8945 100644
--- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t06.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t06.xml
@@ -1,25 +1,25 @@
-
-
- ISO 19005-1:2005 - 6.1.12 Implementation limits - Dictionary
- Maximum capacity of a dictionary (in entries) is 4095
- veraPDF Consortium
- 2015-05-8T15:46:15Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - Dictionary
+ Maximum capacity of a dictionary (in entries) is 4095
+
+
-
+
+
Maximum capacity of a dictionary (in entries) is 4095
size <= 4095
- Maximum capacity of a dictionary (4095) exceeded
+ Dictionary capacity (%1) exceeded 4095
+
+ size
+
-
- ISO19005-1
- 6.1.12
-
- PDF Reference 1.4
- Table C.1
-
-
+
+
+
-
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t07.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t07.xml
index 54f8bb47..5360b02d 100644
--- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t07.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t07.xml
@@ -1,25 +1,25 @@
-
-
- ISO 19005-1:2005 - 6.1.12 Implementation limits - Indirect obejcts
- Maximum number of indirect objects in a PDF file is 8,388,607
- veraPDF Consortium
- 2015-05-8T15:46:15Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - Indirect obejcts
+ Maximum number of indirect objects in a PDF file is 8,388,607
+
+
-
+
+
Maximum number of indirect objects in a PDF file is 8,388,607
nrIndirects <= 8388607
- Maximum number of indirect objects (8,388,607) in a PDF file exceeded
+ Number of indirect objects in a PDF file (%1) exceeded 8,388,607
+
+ nrIndirects
+
-
- ISO19005-1
- 6.1.12
-
- PDF Reference 1.4
- Table C.1
-
-
+
+
+
-
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t08.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t08.xml
new file mode 100644
index 00000000..483baa04
--- /dev/null
+++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t08.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - Graphics state nesting
+ Maximum depth of graphics state nesting by q and Q operators is 28
+
+
+
+
+
+ Maximum depth of graphics state nesting by q and Q operators is 28
+ nestingLevel <= 28
+
+ Depth of graphics state nesting of q/Q operators (%1) exceeded 28
+
+ nestingLevel
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml
new file mode 100644
index 00000000..091fca5c
--- /dev/null
+++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - DeviceN components
+ Maximum number of DeviceN components is 8
+
+
+
+
+
+ Maximum number of DeviceN components is 8
+ nrComponents <= 8
+
+ Number of DeviceN components (%1) exceeded 8
+
+ nrComponents
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml
new file mode 100644
index 00000000..5684097d
--- /dev/null
+++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - CID
+ Maximum value of a CID (character identifier) is 65,535
+
+
+
+
+
+ Maximum value of a CID (character identifier) is 65,535
+ maximalCID <= 65535
+
+ Value of a CID (%1) exceeded 65,535
+
+ maximalCID
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.13 Optional content/verapdf-profile-6-1-13-t01.xml b/PDF_A/1b/6.1 File structure/6.1.13 Optional content/verapdf-profile-6-1-13-t01.xml
new file mode 100644
index 00000000..49612314
--- /dev/null
+++ b/PDF_A/1b/6.1 File structure/6.1.13 Optional content/verapdf-profile-6-1-13-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-1:2005 - 6.1.13 Optional content
+ The document catalog dictionary shall not contain a key with the name OCProperties
+
+
+
+
+
+ The document catalog dictionary shall not contain a key with the name OCProperties
+ isOptionalContentPresent == false
+
+ The document catalog dictionary contains the OCProperties entry
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml b/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml
index 5485015b..0c876d71 100644
--- a/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml
@@ -1,27 +1,28 @@
-
-
- ISO 19005-1:2005 - 6.1.2 File header - PDF header
- The % character of the file header shall occur at byte offset 0 of the file.
+
+
+
+ ISO 19005-1:2005 - 6.1.2 File header - PDF header
+ The % character of the file header shall occur at byte offset 0 of the file.
The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms
- veraPDF Consortium
- 2015-05-8T15:46:15Z
- sha-1 hash code
+
+
-
- The % character of the file header shall occur at byte offset 0 of the file.
+
+
+ The % character of the file header shall occur at byte offset 0 of the file.
The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms
- pdfHeaderCompliesPDFA
-
- File header does not start at byte offset 0 or does not correctly identify the version of the PDF document
-
-
- ISO19005-1
- 6.1.2
-
- PDF 1.4 Reference
- 3.4.1
-
-
-
-
+ headerOffset == 0 && /%PDF-\d\.\d/.test(header)
+
+ File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-n.m
+
+ header
+ headerOffset
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml b/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml
index d11bacdd..8987c317 100644
--- a/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml
@@ -1,23 +1,29 @@
-
-
- ISO 19005-1:2005 - 6.1.2 File header - Binary comment
- The file header line shall be immediately followed by a comment consisting of a % character followed by at
+
+
+
+ ISO 19005-1:2005 - 6.1.2 File header - Binary comment
+ The file header line shall be immediately followed by a comment consisting of a % character followed by at
least four characters, each of whose encoded byte values shall have a decimal value greater than 127
- veraPDF Consortium
- 2015-05-8T15:46:15Z
- sha-1 hash code
+
+
-
- The file header line shall be immediately followed by a comment consisting of a % character followed by at
+
+
+ The file header line shall be immediately followed by a comment consisting of a % character followed by at
least four characters, each of whose encoded byte values shall have a decimal value greater than 127
- binaryHeaderComplyPDFA
-
- Binary comment in the file header is missing or does not comply PDF/A requirements
-
-
- ISO19005-1
- 6.1.2
-
-
-
+ headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
+
+ Binary comment in the file header is missing or does not start with 4 bytes with byte values
+ above 127 (first four bytes = %1, %2, %3, %4)
+
+ headerByte1
+ headerByte2
+ headerByte3
+ headerByte4
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml
index aa49ef06..b033698b 100644
--- a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml
@@ -1,22 +1,22 @@
-
-
- ISO 19005-1:2005 - 6.1.3 File trailer - ID keyword
- The file trailer dictionary shall contain the ID keyword
- veraPDF Consortium
- 2015-06-02T13:22:15Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.1.3 File trailer - ID keyword
+ The file trailer dictionary shall contain the ID keyword
+
+
-
- The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file,
+
+
+ The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file,
as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2
- (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null)
-
- Missing ID in the document trailer
-
-
- ISO19005-1:2005
- 6.1.3
-
-
-
+ (isLinearized == true) ? (firstPageID != null) : (lastID != null)
+
+ Missing ID in the document trailer
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml
index 94a5450d..187d4e5c 100644
--- a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml
@@ -1,22 +1,21 @@
-
-
- ISO 19005-1:2005 - 6.1.3 File trailer - Encrypt
- The keyword Encrypt shall not be used in the trailer dictionary
- veraPDF Consortium
- 2015-06-02T13:22:15Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.1.3 File trailer - Encrypt
+ The keyword Encrypt shall not be used in the trailer dictionary
+
+
-
- The keyword Encrypt shall not be used in the trailer dictionary
- isEncrypted != true
-
- Encrypt keyword is present in the trailer dictionary
-
-
- ISO19005-1:2005
- 6.1.3
-
-
-
+
+
+ The keyword Encrypt shall not be used in the trailer dictionary
+ isEncrypted != true
+
+ Encrypt keyword is present in the trailer dictionary
+
+
+
+
+
+
-
diff --git a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml
index ff8cc9de..71cf7fdc 100644
--- a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml
@@ -1,21 +1,23 @@
-
-
- ISO 19005-1:2005 - 6.1.3 File trailer - EOF
- No data shall follow the last end-of-file marker except a single optional end-of-line marker.
- veraPDF Consortium
- 2015-06-02T13:38:12Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.1.3 File trailer - EOF
+ No data shall follow the last end-of-file marker except a single optional end-of-line marker
+
+
-
- No data shall follow the last end-of-file marker except a single optional end-of-line marker.
- eofCompliesPDFA
-
- Data is present after the last end-of-file marker
-
-
- ISO19005-1:2005
- 6.1.3
-
-
-
+
+
+ No data shall follow the last end-of-file marker except a single optional end-of-line marker
+ postEOFDataSize == 0
+
+ %1 byte(s) of data is present after the last end-of-file marker
+
+ postEOFDataSize
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml
index d6123bdb..659228eb 100644
--- a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml
@@ -1,23 +1,28 @@
-
-
- ISO 19005-1:2005 - 6.1.3 File trailer - Linearized PDF - Matching IDs
- In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary
+
+
+
+ ISO 19005-1:2005 - 6.1.3 File trailer - Linearized PDF - Matching IDs
+ In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary
and the last trailer dictionary, the value to both instances of the ID keyword shall be identical
- veraPDF Consortium
- 2015-06-02T13:48:12Z
- sha-1 hash code
+
+
-
- In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary
+
+
+ In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary
and the last trailer dictionary, the value to both instances of the ID keyword shall be identical
- (isLinearized != true)|| lastID == null || (firstPageID == lastID)
-
- Last ID is present in the Linearized PDF and does not match the first page ID
-
-
- ISO 19005-1:2005/Cor 2:2011
- 6.1.3
-
-
-
+ (isLinearized != true) || lastID == null || (firstPageID == lastID)
+
+ Last ID (%1) is present in the Linearized PDF and does not match the first page ID (%2)
+
+ lastIDValue
+ firstPageIDValue
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml b/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml
index 610e3c99..f218745b 100644
--- a/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml
@@ -1,21 +1,21 @@
-
-
- ISO 19005-1:2005 - 6.1.4 Cross reference table - Spacings of subsection headers
- In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h)
- veraPDF Consortium
- 2015-06-04T09:22:03Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.1.4 Cross reference table - Spacings of subsection headers
+ In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h)
+
+
-
- In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h)
- xrefHeaderSpacingsComplyPDFA
-
- Spacings of subsection headers in the cross reference table do not comply PDF/A specification
-
-
- ISO19005-1:2005
- 6.1.4
-
-
-
+
+
+ In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h)
+ subsectionHeaderSpaceSeparated == true
+
+ Extra or missing spacings around in a subsection header of the cross reference table
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml b/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml
index a4412284..cb6abdf0 100644
--- a/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml
@@ -1,21 +1,21 @@
-
-
- ISO 19005-1:2005 - 6.1.4 Cross reference table - Spacings after xref
- The xref keyword and the cross reference subsection header shall be separated by a single EOL marker
- veraPDF Consortium
- 2015-06-04T09:28:51Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.1.4 Cross reference table - Spacings after xref
+ The xref keyword and the cross reference subsection header shall be separated by a single EOL marker
+
+
-
- The xref keyword and the cross reference subsection header shall be separated by a single EOL marker
- xrefEOLMarkersComplyPDFA
-
- Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification
-
-
- ISO19005-1:2005
- 6.1.4
-
-
-
+
+
+ The xref keyword and the cross reference subsection header shall be separated by a single EOL marker
+ xrefEOLMarkersComplyPDFA
+
+ Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t03.xml b/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t03.xml
new file mode 100644
index 00000000..9766bfed
--- /dev/null
+++ b/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t03.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-1:2005 - 6.1.4 Cross reference table - Xref stream
+ Xref streams shall not be used
+
+
+
+
+
+ Xref streams shall not be used
+ containsXRefStream == false
+
+ The document uses xref streams
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml b/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml
index f4462380..671042dd 100644
--- a/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml
@@ -1,21 +1,23 @@
-
-
- ISO 19005-1:2005 - 6.1.2 String objects - Even number of characters
- Hexadecimal strings shall contain an even number of non-white-space characters
- veraPDF Consortium
- 2015-05-8T15:46:15Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.1.6 String objects - Even number of characters
+ Hexadecimal strings shall contain an even number of non-white-space characters
+
+
-
- Hexadecimal strings shall contain an even number of non-white-space characters
- (isHex != true) || hexCount % 2 == 0
-
- Hexadecimal string contains odd number of non-white-space characters
-
-
- ISO19005-1
- 6.1.6
-
-
-
+
+
+ Hexadecimal strings shall contain an even number of non-white-space characters
+ (isHex != true) || hexCount % 2 == 0
+
+ A hexadecimal string contains odd number (%1) of non-white-space characters
+
+ hexCount
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml b/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml
index 6af6c63e..a17237aa 100644
--- a/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml
@@ -1,21 +1,21 @@
-
-
- ISO 19005-1:2005 - 6.1.2 String objects - Characters range
- All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f
- veraPDF Consortium
- 2015-05-8T15:46:15Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.1.6 String objects - Characters range
+ All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f
+
+
-
- All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f
- (isHex != true) || isHexSymbols
-
- Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f
-
-
- ISO19005-1
- 6.1.6
-
-
-
+
+
+ All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f
+ (isHex != true) || containsOnlyHex == true
+
+ Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml
index 1d4b226b..7b117141 100644
--- a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml
@@ -1,23 +1,26 @@
-
-
- ISO 19005-1:2005 - 6.1.7 Stream objects - Correct Length
- The value of the Length key specified in the stream dictionary shall match the number of bytes in the file
+
+
+
+ ISO 19005-1:2005 - 6.1.7 Stream objects - Correct Length
+ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file
following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword
- veraPDF Consortium
- 2015-05-8T15:46:15Z
- sha-1 hash code
+
+
-
- The value of the Length key specified in the stream dictionary shall match the number of bytes in the file
+
+
+ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file
following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword
- isLengthCorrect
-
- Actual length of the stream does not match the value of the Length key in the Stream dictionary
-
-
- ISO19005-1
- 6.1.7
-
-
-
+ Length == realLength
+
+ Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s))
+
+ realLength
+ Length
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml
index d7338235..08c101b1 100644
--- a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml
@@ -1,23 +1,23 @@
-
-
- ISO 19005-1:2005 - 6.1.7 Stream objects - Keywords spacing
- The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence
+
+
+
+ ISO 19005-1:2005 - 6.1.7 Stream objects - Keywords spacing
+ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence
or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker
- veraPDF Consortium
- 2015-05-8T15:46:15Z
- sha-1 hash code
+
+
-
- The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence
+
+
+ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence
or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker
- spacingCompliesPDFA
-
- Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification
-
-
- ISO19005-1
- 6.1.7
-
-
-
+ streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true
+
+ Extra spacings or missing EOL characters around keywords 'stream' and 'endstream'
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml
new file mode 100644
index 00000000..9d5562f0
--- /dev/null
+++ b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-1:2005 - 6.1.7 Stream objects - File specification
+ A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys
+
+
+
+
+
+ A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys
+ F == null && FFilter == null && FDecodeParms == null
+
+ A stream object dictionary contains %1 key(s)
+
+ keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString()
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml b/PDF_A/1b/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml
index 070c89f4..3e9c89b9 100644
--- a/PDF_A/1b/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml
+++ b/PDF_A/1b/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml
@@ -1,25 +1,25 @@
-
-
- ISO 19005-1:2005 - 6.1.8 Indirect objects - Spacings
- The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword
+
+
+
+ ISO 19005-1:2005 - 6.1.8 Indirect objects - Spacings
+ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword
shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj
- keywords shall each be followed by an EOL marker.
- veraPDF Consortium
- 2015-05-8T15:46:15Z
- sha-1 hash code
+ keywords shall each be followed by an EOL marker
+
+
-
- The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword
+
+
+ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword
shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj
- keywords shall each be followed by an EOL marker.
- spacingCompliesPDFA
-
- Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification
-
-
- ISO19005-1
- 6.1.8
-
-
-
+ keywords shall each be followed by an EOL marker
+ spacingCompliesPDFA
+
+ Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj'
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.2 Graphics/6.2.10 Content streams/verapdf-profile-6-2-10-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.10 Content streams/verapdf-profile-6-2-10-t01.xml
new file mode 100644
index 00000000..8b5cb62b
--- /dev/null
+++ b/PDF_A/1b/6.2 Graphics/6.2.10 Content streams/verapdf-profile-6-2-10-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-1:2005 - 6.2.10 Content streams
+ A content stream shall not contain any operators not defined in PDF Reference
+ even if such operators are bracketed by the BX/EX compatibility operators
+
+
+
+
+
+ A content stream shall not contain any operators not defined in PDF Reference
+ even if such operators are bracketed by the BX/EX compatibility operators
+ false
+
+ A content stream contains operator %1 not defined in PDF Reference
+
+ name
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml
index fe214548..2b165436 100644
--- a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml
+++ b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml
@@ -1,27 +1,25 @@
-
-
- ISO 19005-1:2005 - 6.2.2 Output intent - Valid ICC output profile
- A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents
+
+
+
+ ISO 19005-1:2005 - 6.2.2 Output intent - Valid ICC output profile
+ A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents
array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key
- veraPDF Consortium
- 2015-06-15T21:52:15Z
- sha-1 hash code
+
+
-
- A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents
+
+
+ A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents
array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key
- (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY")
-
- The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information
-
-
- ISO19005-1
- 6.2.2
-
- PDF 1.4 Reference
- 9.4.10
-
-
-
-
+ (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0
+
+ The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml
index 20c0b9bf..6c9d8575 100644
--- a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml
+++ b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml
@@ -1,29 +1,25 @@
-
-
- ISO 19005-1:2005 - 6.2.2 Output intent - Matching multiple output profiles
- If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile
+
+
+
+ ISO 19005-1:2005 - 6.2.2 Output intent - Matching multiple output profiles
+ If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile
key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream
- veraPDF Consortium
- 2015-06-15T22:26:37Z
- sha-1 hash code
+
+
-
- If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile
+
+
+ If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile
key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream
- destProfile == null || gOutputProfileRef == null || destProfile == gOutputProfileRef
-
- File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles
-
-
- ISO19005-1
- 6.2.2
-
-
-
-
-
- null
- gOutputProfileRef == null ? destOutputProfileRef : gOutputProfileRef
-
-
+ sameOutputProfileIndirect == true
+
+ File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1)
+
+ outputProfileIndirects
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.2 ICCBased colour spaces/verapdf-profile-6-2-3-2-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.2 ICCBased colour spaces/verapdf-profile-6-2-3-2-t01.xml
new file mode 100644
index 00000000..167d2cac
--- /dev/null
+++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.2 ICCBased colour spaces/verapdf-profile-6-2-3-2-t01.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.2 ICCBased colour spaces
+ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5
+
+
+
+
+
+ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5
+ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") &&
+ (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0
+
+ The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.4 requirements
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.2 ICCBased colour spaces/verapdf-profile-6-2-3-2-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.2 ICCBased colour spaces/verapdf-profile-6-2-3-2-t02.xml
new file mode 100644
index 00000000..e5830d05
--- /dev/null
+++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.2 ICCBased colour spaces/verapdf-profile-6-2-3-2-t02.xml
@@ -0,0 +1,30 @@
+
+
+
+ ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.2 ICCBased colour spaces - N key
+ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5.
+ The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile.
+ As of PDF 1.4, N must be 1, 3, or 4
+
+
+
+
+
+ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5.
+ The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile.
+ As of PDF 1.4, N must be 1, 3, or 4
+ N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK"))
+
+ The N entry (value %1) in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile (color space %2)
+
+ N
+ colorSpace
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t01.xml
new file mode 100644
index 00000000..facbf5c4
--- /dev/null
+++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t01.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.3 Uncalibrated colour spaces - DeviceRGB
+ DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space
+
+
+
+
+
+ DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space
+ gOutputCS != null && gOutputCS == "RGB "
+
+ DeviceRGB colour space is used without RGB output intent profile
+
+
+
+
+
+
+
+ null
+ S == "GTS_PDFA1" ? colorSpace : gOutputCS
+
+
+
diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t02.xml
new file mode 100644
index 00000000..1a9a2af0
--- /dev/null
+++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t02.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.3 Uncalibrated colour spaces - DeviceCMYK
+ DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space
+
+
+
+
+
+ DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space
+ gOutputCS != null && gOutputCS == "CMYK"
+
+ DeviceCMYK colour space is used without CMYK output intent profile
+
+
+
+
+
+
+
+ null
+ S == "GTS_PDFA1" ? colorSpace : gOutputCS
+
+
+
diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t03.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t03.xml
new file mode 100644
index 00000000..50dcae1a
--- /dev/null
+++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t03.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.3 Uncalibrated colour spaces - DeviceGray
+ If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2
+
+
+
+
+
+ If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2
+ gOutputCS != null
+
+ DeviceGray colour space is used without output intent profile
+
+
+
+
+
+
+
+ null
+ S == "GTS_PDFA1" ? colorSpace : gOutputCS
+
+
+
diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml
deleted file mode 100644
index a82db55d..00000000
--- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
- ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.2 ICCBased colour spaces
- All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5
- veraPDF Consortium
- 2015-06-15T22:36:27Z
- sha-1 hash code
-
-
- All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5
- (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") &&
- (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ")
-
- The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements
-
-
- ISO19005-1
- 6.2.3
-
- PDF 1.4 Reference
- 4.5.4, ICCBased Color Spaces
-
-
-
-
-
diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml
deleted file mode 100644
index c79cfab8..00000000
--- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
- ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.3 Uncalibrated colour spaces - DeviceRGB
- If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in
- 6.2.2. DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space
- veraPDF Consortium
- 2015-06-15T22:46:23Z
- sha-1 hash code
-
-
- If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in
- 6.2.2. DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space
- gOutputCS != null && gOutputCS == "RGB "
-
- DeviceRGB colour space is used without RGB output intent profile
-
-
- ISO19005-1
- 6.2.3.3
-
-
-
-
-
- null
- colorSpace
-
-
-
diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml
deleted file mode 100644
index bea3afda..00000000
--- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
- ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.3 Uncalibrated colour spaces - DeviceRGB
- If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in
- 6.2.2. DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space
- veraPDF Consortium
- 2015-06-15T22:46:23Z
- sha-1 hash code
-
-
- If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in
- 6.2.2. DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space
- gOutputCS != null && gOutputCS == "CMYK"
-
- DeviceCMYK colour space is used without CMYK output intent profile
-
-
- ISO19005-1
- 6.2.3.3
-
-
-
-
-
- null
- colorSpace
-
-
-
diff --git a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml
index 685ba28c..0a184e62 100644
--- a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml
+++ b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml
@@ -1,21 +1,21 @@
-
-
- ISO 19005-1:2005 - 6.2.4 Images - Alternates
-
- veraPDF Consortium
- 2015-06-16T22:22:45Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.2.4 Images - Alternates
+ An Image dictionary shall not contain the Alternates key
+
+
-
- An Image dictionary shall not contain the Alternates key
- Alternates_size == 0
-
- Alternates key is present in the Image dictionary(
-
-
- ISO19005-1
- 6.2.4
-
-
-
+
+
+ An Image dictionary shall not contain the Alternates key
+ containsAlternates == false
+
+ Alternates key is present in the Image dictionary
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml
index 6d3dceb3..a0d5bd96 100644
--- a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml
+++ b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml
@@ -1,26 +1,21 @@
-
-
- ISO 19005-1:2005 - 6.2.4 Images - OPI
-
- veraPDF Consortium
- 2015-06-16T22:29:21Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.2.4 Images - OPI
+ An XObject dictionary (Image or Form) shall not contain the OPI key
+
+
-
- An XObject dictionary (Image or Form) shall not contain the OPI key
- OPI_size == 0
-
- OPI key is present in the XObject dictionary(
-
-
- ISO19005-1
- 6.2.4
-
-
- ISO19005-1
- 6.2.5
-
-
-
-
+
+
+ An XObject dictionary (Image or Form) shall not contain the OPI key
+ containsOPI == false
+
+ OPI key is present in the XObject dictionary
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t03.xml b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t03.xml
index c4268fdd..98176517 100644
--- a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t03.xml
+++ b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t03.xml
@@ -1,21 +1,21 @@
-
-
- ISO 19005-1:2005 - 6.2.4 Images - Interpolate
-
- veraPDF Consortium
- 2015-06-16T22:25:35Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.2.4 Images - Interpolate
+ If an Image dictionary contains the Interpolate key, its value shall be false
+
+
-
- If an Image dictionary contains the Interpolate key, its value shall be false
- Interpolate == false
-
- The value of the Interpolate key in the Image dictionary is true
-
-
- ISO19005-1
- 6.2.4
-
-
-
+
+
+ If an Image dictionary contains the Interpolate key, its value shall be false
+ Interpolate == false
+
+ The value of the Interpolate key in the Image dictionary is true
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t04.xml b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t04.xml
new file mode 100644
index 00000000..a3b433ef
--- /dev/null
+++ b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t04.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-1:2005 - 6.2.4 Images - BitsPerComponent
+ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4 or 8
+
+
+
+
+
+ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4 or 8
+ BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 ||
+ BitsPerComponent == 8
+
+ The value of the BitsPerComponent key in the Image dictionary is %1
+
+ BitsPerComponent
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml
index 1fd1d66d..53178898 100644
--- a/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml
+++ b/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml
@@ -1,21 +1,21 @@
-
-
- ISO 19005-1:2005 - 6.2.5 Form XObjects - PS
- A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key
- veraPDF Consortium
- 2015-06-16T22:24:12Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.2.5 Form XObjects - PS
+ A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key
+
+
-
- A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key
- (Subtype2 == null || Subtype2 != "PS") && PS_size == 0
-
- The from XObject dictionary contains a PS key or Subtype2 key with value PS
-
-
- ISO19005-1
- 6.2.5
-
-
-
+
+
+ A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key
+ (Subtype2 == null || Subtype2 != "PS") && containsPS == false
+
+ The form XObject dictionary contains a PS key or Subtype2 key with value PS
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.2 Graphics/6.2.6 Reference XObjects/verapdf-profile-6-2-6-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.6 Reference XObjects/verapdf-profile-6-2-6-t01.xml
index 62db12dc..dae51e63 100644
--- a/PDF_A/1b/6.2 Graphics/6.2.6 Reference XObjects/verapdf-profile-6-2-6-t01.xml
+++ b/PDF_A/1b/6.2 Graphics/6.2.6 Reference XObjects/verapdf-profile-6-2-6-t01.xml
@@ -1,21 +1,21 @@
-
-
- ISO 19005-1:2005 - 6.2.6 Reference XObjects
- A conforming file shall not contain any reference XObjects
- veraPDF Consortium
- 2015-06-16T22:57:07Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.2.6 Reference XObjects
+ A conforming file shall not contain any reference XObjects
+
+
-
- A conforming file shall not contain any reference XObjects
- Ref_size == 0
-
- The document contains a reference XObject (Ref key in the form XObject dictionary)
-
-
- ISO19005-1
- 6.2.6
-
-
-
+
+
+ A conforming file shall not contain any reference XObjects
+ containsRef == false
+
+ The document contains a reference XObject (Ref key in the form XObject dictionary)
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.2 Graphics/6.2.7 PostScript XObjects/verapdf-profile-6-2-7-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.7 PostScript XObjects/verapdf-profile-6-2-7-t01.xml
index d7f47f2d..13963179 100644
--- a/PDF_A/1b/6.2 Graphics/6.2.7 PostScript XObjects/verapdf-profile-6-2-7-t01.xml
+++ b/PDF_A/1b/6.2 Graphics/6.2.7 PostScript XObjects/verapdf-profile-6-2-7-t01.xml
@@ -1,21 +1,21 @@
-
-
- ISO 19005-1:2005 - 6.2.7 PostScript XObjects
- A conforming file shall not contain any PostScript XObjects
- veraPDF Consortium
- 2015-06-16T23:04:24Z
- sha-1 hash code
+
+
+
+ ISO 19005-1:2005 - 6.2.7 PostScript XObjects
+ A conforming file shall not contain any PostScript XObjects
+
+
-
- A conforming file shall not contain any PostScript XObjects
- Subtype != "PS"
-
- The document contains a PostScript XObject
-
-
- ISO19005-1
- 6.2.7
-
-
-
+
+
+ A conforming file shall not contain any PostScript XObjects
+ Subtype != "PS"
+
+ The document contains a PostScript XObject
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t01.xml
new file mode 100644
index 00000000..46022621
--- /dev/null
+++ b/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-1:2005 - 6.2.8 Extended graphics state - TR key
+ An ExtGState dictionary shall not contain the TR key
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR key
+ TR == null
+
+ An ExtGState dictionary contains the TR key
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t02.xml
new file mode 100644
index 00000000..460ebdc8
--- /dev/null
+++ b/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.2.8 Extended graphics state - TR2 key
+ An ExtGState dictionary shall not contain the TR2 key with a value other than Default
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR2 key with a value other than Default
+ TR2 == null || TR2 == "Default"
+
+ An ExtGState dictionary contains the TR2 key with value %1 other than Default
+
+ TR2
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml
new file mode 100644
index 00000000..aa795da3
--- /dev/null
+++ b/PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-1:2005 - 6.2.9 Rendering intents
+ Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference
+ RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation
+
+
+
+
+
+ Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference
+ RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation
+ internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation"
+
+ A rendering intent with non-standard value %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t01.xml
new file mode 100644
index 00000000..99d15465
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t01.xml
@@ -0,0 +1,30 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.2 Font types - Type entry
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5.
+ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5.
+ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary
+ Type == "Font"
+
+ A Font dictionary has value %1 of Type entry instead of Font
+
+ Type
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t02.xml
new file mode 100644
index 00000000..dfcdef43
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t02.xml
@@ -0,0 +1,33 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.2 Font types - Subtype entry
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5.
+ Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts
+ "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5.
+ Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts
+ "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts
+ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0"
+ || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
+
+ Invalid Subtype entry in font dictionary with value %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml
new file mode 100644
index 00000000..d9db8bf0
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.2 Font types - BaseFont entry
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5.
+ BaseFont - name - (Required) The PostScript name of the font
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5.
+ BaseFont - name - (Required) The PostScript name of the font
+ Subtype == "Type3" || fontName != null
+
+ A BaseFont entry is missing or has invalid type
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t04.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t04.xml
new file mode 100644
index 00000000..a5bee562
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t04.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.2 Font types - FirstChar entry
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5.
+ FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5.
+ FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array
+ isStandard == true || FirstChar != null
+
+ A non-standard simple font dictionary has missing or invalid FirstChar entry
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t05.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t05.xml
new file mode 100644
index 00000000..68a05c66
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t05.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.2 Font types - LastChat entry
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5.
+ LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5.
+ LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array
+ isStandard == true || LastChar != null
+
+ A non-standard simple font dictionary has missing or invalid LastChar entry
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t06.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t06.xml
new file mode 100644
index 00000000..2d5b6fe3
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t06.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.2 Font types - Widths entry
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5.
+ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5.
+ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths
+ isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
+
+ Widths array is missing or has invalid size %1 instead of %2
+
+ Widths_size
+ LastChar - FirstChar + 1
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml
new file mode 100644
index 00000000..590d71f5
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml
@@ -0,0 +1,32 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.2 Font types - embedded font Subtype
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5.
+ The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are
+ Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF) and CIDFontType0C - Type 0 CIDFont program represented
+ in the Compact Font Format (CFF)
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5.
+ The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are
+ Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF) and CIDFontType0C - Type 0 CIDFont program represented
+ in the Compact Font Format (CFF)
+ fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C"
+
+ Unsupported font file format %1 of the embedded font
+
+ fontFileSubtype
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.1 General/verapdf-profile-6-3-3-1-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.1 General/verapdf-profile-6-3-3-1-t01.xml
new file mode 100644
index 00000000..d423c665
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.1 General/verapdf-profile-6-3-3-1-t01.xml
@@ -0,0 +1,34 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.3 Composite fonts - Registry and Ordering
+ For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its
+ CIDFont and CMap dictionaries shall be compatible
+
+
+
+
+
+ For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its
+ CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries
+ for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null &&
+ CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry)
+
+ Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible
+ (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.2 CIDFonts/verapdf-profile-6-3-3-2-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.2 CIDFonts/verapdf-profile-6-3-3-2-t01.xml
new file mode 100644
index 00000000..7d5699e8
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.2 CIDFonts/verapdf-profile-6-3-3-2-t01.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.3 Composite fonts - CIDToGIDMap
+ For all Type 2 CIDFonts that are used for rendering, the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping
+ from CIDs to glyph indices or the name Identity, as described in PDF Reference Table 5.13
+
+
+
+
+
+ For all Type 2 CIDFonts that are used for rendering, the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping
+ from CIDs to glyph indices or the name Identity, as described in PDF Reference Table 5.13
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || renderingMode == 3
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.3 CMaps/verapdf-profile-6-3-3-3-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.3 CMaps/verapdf-profile-6-3-3-3-t01.xml
new file mode 100644
index 00000000..4544047c
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.3 CMaps/verapdf-profile-6-3-3-3-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.3 Composite fonts - CMaps
+ All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4
+
+
+
+
+
+ All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4
+ CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1
+
+ A CMap is different from "Identity-H" or "Identity-V" and is not embedded
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.3 CMaps/verapdf-profile-6-3-3-3-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.3 CMaps/verapdf-profile-6-3-3-3-t02.xml
new file mode 100644
index 00000000..c7064ae1
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.3 CMaps/verapdf-profile-6-3-3-3-t02.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.3 Composite fonts - WMode
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.4 Embedded font programs/verapdf-profile-6-3-4-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.4 Embedded font programs/verapdf-profile-6-3-4-t01.xml
new file mode 100644
index 00000000..c1e4978a
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.4 Embedded font programs/verapdf-profile-6-3-4-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.4 Embedded font programs
+ The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8,
+ except when the fonts are used exclusively with text rendering mode 3
+
+
+
+
+
+ The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8,
+ except when the fonts are used exclusively with text rendering mode 3
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml
new file mode 100644
index 00000000..0536b0ab
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.5 Font subsets
+ Embedded font programs shall define all font glyphs referenced for rendering with conforming file
+
+
+
+
+
+ Embedded font programs shall define all font glyphs referenced for rendering with conforming file
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml
new file mode 100644
index 00000000..6077a151
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.5 Font subsets - CharSet entry in Type1 subsets
+ For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string
+ listing the character names defined in the font subset, as described in PDF Reference Table 5.18
+
+
+
+
+
+ For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string
+ listing the character names defined in the font subset, as described in PDF Reference Table 5.18
+ fontName.search(/[A-Z]{6}\+/) != 0 || (CharSet != null && charSetListsAllGlyphs == true)
+
+ A Type1 font subset does not define CharSet entry in its Descriptor dictionary
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml
new file mode 100644
index 00000000..8e04d9c3
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.5 Font subsets - CIDSet entry in CID Font subsets
+ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a
+ CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20
+
+
+
+
+
+ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a
+ CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20
+ fontName.search(/[A-Z]{6}\+/) != 0 || (containsCIDSet == true && cidSetListsAllGlyphs == true)
+
+ A CIDSet entry in the Font descriptor is missing or does not correctly identify all glyphs
+ present in the embedded font subset and used for rendering
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.6 Font metrics/verapdf-profile-6-3-6-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.6 Font metrics/verapdf-profile-6-3-6-t01.xml
new file mode 100644
index 00000000..0640b098
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.6 Font metrics/verapdf-profile-6-3-6-t01.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.6 Font metrics
+ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and
+ in the embedded font program shall be consistent
+
+
+
+
+
+ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and
+ in the embedded font program shall be consistent
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null ||
+ Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml
new file mode 100644
index 00000000..d1a31849
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml
@@ -0,0 +1,34 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.7 Character encodings - Non-symbolic TrueType fonts
+ All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as
+ the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the
+ dictionary that is the value of the Encoding entry in the font dictionary.
+ If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry
+
+
+
+
+
+ All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as
+ the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the
+ dictionary that is the value of the Encoding entry in the font dictionary.
+ If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" ||
+ Encoding == "WinAnsiEncoding") && containsDifferences == false)
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List
+ (Encoding = %1, Encoding entry contains a Differences = %2)
+
+ Encoding
+ containsDifferences
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t02.xml
new file mode 100644
index 00000000..e2435fd0
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.7 Character encodings - Symbolic TrueType fonts
+ All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary
+
+
+
+
+
+ All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml
new file mode 100644
index 00000000..0557dc71
--- /dev/null
+++ b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-1:2005 - 6.3.7 Character encodings - Number of cmaps in the symbolic TrueType font program
+ Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding
+
+
+
+
+
+ Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding
+ isSymbolic == false || nrCmaps == 1
+
+ The embedded font program for a symbolic TrueType font contains %1 cmap subtables
+
+ nrCmaps
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t01.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t01.xml
new file mode 100644
index 00000000..99768ba0
--- /dev/null
+++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.4 Transparency - SMask
+ If an SMask key appears in an ExtGState dictionary, its value shall be None
+
+
+
+
+
+ If an SMask key appears in an ExtGState dictionary, its value shall be None
+ SMask == null || SMask == "None"
+
+ An ExtGState contains SMask key with value %1 instead of None
+
+ SMask
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml
new file mode 100644
index 00000000..06a53739
--- /dev/null
+++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.4 Transparency - SMask
+ An XObject dictionary shall not contain the SMask key
+
+
+
+
+
+ An XObject dictionary shall not contain the SMask key
+ containsSMask == false
+
+ An XObject contains an SMask key
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t03.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t03.xml
new file mode 100644
index 00000000..08b5b73e
--- /dev/null
+++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-1:2005 - 6.4 Transparency - Transparency group
+ A Group object with an S key with a value of Transparency shall not be included in a form XObject.
+ A Group object with an S key with a value of Transparency shall not be included in a page dictionary
+
+
+
+
+
+ A Group object with an S key with a value of Transparency shall not be included in a form XObject.
+ A Group object with an S key with a value of Transparency shall not be included in a page dictionary
+ S != "Transparency"
+
+ A transparency group is present in a form XObject or page dictionary
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml
new file mode 100644
index 00000000..15d96809
--- /dev/null
+++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.4 Transparency - Blend mode
+ The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible
+
+
+
+
+
+ The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible
+ BM == null || BM == "Normal" || BM == "Compatible"
+
+ An ExtGState dictionary contains the BM key (blend mode) with value %1 that is neither Normal or Compatible
+
+ BM
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml
new file mode 100644
index 00000000..1ae5eaa6
--- /dev/null
+++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.4 Transparency - Stroke alpha
+ The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0
+
+
+
+
+
+ The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0
+ CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001
+
+ An ExtGState dictionary contains the CA key (stroke alpha) with value %1 other than 1.0
+
+ CA
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml
new file mode 100644
index 00000000..645b5e90
--- /dev/null
+++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.4 Transparency - Fill alpha
+ The following keys, if present in an ExtGState object, shall have the values shown: ca - 1.0
+
+
+
+
+
+ The following keys, if present in an ExtGState object, shall have the values shown: ca - 1.0
+ ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001
+
+ An ExtGState dictionary contains the ca key (fill alpha) with value %1 other than 1.0
+
+ ca
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.5 Annotations/6.5.2 Annotation types/verapdf-profile-6-5-2-t01.xml b/PDF_A/1b/6.5 Annotations/6.5.2 Annotation types/verapdf-profile-6-5-2-t01.xml
new file mode 100644
index 00000000..0f2caaf5
--- /dev/null
+++ b/PDF_A/1b/6.5 Annotations/6.5.2 Annotation types/verapdf-profile-6-5-2-t01.xml
@@ -0,0 +1,30 @@
+
+
+
+ ISO 19005-1:2005 - 6.5.2 Annotation types
+ Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment,
+ Sound and Movie types shall not be permitted
+
+
+
+
+
+ Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment,
+ Sound and Movie types shall not be permitted
+ Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" ||
+ Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" ||
+ Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" ||
+ Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet"
+
+ Unknown or not permitted Annotation type %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t01.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t01.xml
new file mode 100644
index 00000000..43840ee9
--- /dev/null
+++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Transparency
+ An annotation dictionary shall not contain the CA key with a value other than 1.0
+
+
+
+
+
+ An annotation dictionary shall not contain the CA key with a value other than 1.0
+ CA == null || CA == 1.0
+
+ An annotation dictionary contains the CA key with value %1 instead of 1.0
+
+ CA
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml
new file mode 100644
index 00000000..b5f1853a
--- /dev/null
+++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml
@@ -0,0 +1,30 @@
+
+
+
+ ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Flags
+ An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden,
+ Invisible and NoView flag bits shall be set to 0
+
+
+
+
+
+ An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden,
+ Invisible and NoView flag bits shall be set to 0
+ F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0
+
+ Annotation flags are either missing or set the annotation to be hidden/invisible or non-printable
+ (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5)
+
+ F
+ F != null ? (F & 4) >> 2 : null
+ F != null ? (F & 2) >> 1 : null
+ F != null ? (F & 1) : null
+ F != null ? (F & 32) >> 5 : null
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml
new file mode 100644
index 00000000..5cc4ad45
--- /dev/null
+++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml
@@ -0,0 +1,31 @@
+
+
+
+ ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - RGB color
+ An annotation dictionary shall not contain the C array or the IC array unless the colour space of the
+ DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB
+
+
+
+
+
+ An annotation dictionary shall not contain the C array or the IC array unless the colour space of the
+ DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB
+ (containsC == false && containsIC == false) || gOutputCS == "RGB "
+
+ Annotation's color (C present = %1) or interior color (IC present = %2) is used without specifying RGB-based destination output profile
+
+ containsC
+ containsIC
+
+
+
+
+
+
+
+ null
+ S == "GTS_PDFA1" ? colorSpace : gOutputCS
+
+
+
diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml
new file mode 100644
index 00000000..1286ac26
--- /dev/null
+++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Normal appearance
+ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as
+ its value shall contain only the N key
+
+
+
+
+
+ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as
+ its value shall contain only the N key
+ AP == null || AP == "N"
+
+ Annotation's appearance dictionary contains entries %1 other than N
+
+ AP.split('&').filter(elem => elem != 'N').toString()
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t05.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t05.xml
new file mode 100644
index 00000000..8b608707
--- /dev/null
+++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t05.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Normal appearance
+ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn,
+ the value of the N key shall be an appearance subdictionary
+
+
+
+
+
+ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn,
+ the value of the N key shall be an appearance subdictionary
+ AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0)
+
+ An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of
+ Btn, but the value of the N key is %1 instead of appearance subdictionary
+
+ N_type
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t06.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t06.xml
new file mode 100644
index 00000000..f0d128a2
--- /dev/null
+++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t06.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Normal appearance
+ If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated
+ with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
+
+
+
+
+
+ If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated
+ with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
+ AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream"
+
+ An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the
+ value of the N key is not an appearance stream
+
+ Subtype
+ FT
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml
new file mode 100644
index 00000000..da41e097
--- /dev/null
+++ b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-1:2005 - 6.6.1 Actions General - Action types
+ The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op
+ actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2)
+
+
+
+
+
+ The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted.
+ Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2)
+ S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"
+
+ Unknown or not permitted Action type %1
+
+ S
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t02.xml b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t02.xml
new file mode 100644
index 00000000..d47b755c
--- /dev/null
+++ b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t02.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-1:2005 - 6.6.1 Actions General - Named actions
+ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
+
+
+
+
+
+ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
+ N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
+
+ Unknown or not permitted named action %1
+
+ N
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml
new file mode 100644
index 00000000..5a4710d1
--- /dev/null
+++ b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-1:2005 - 6.6.1 Actions General - Form fields
+ Interactive form fields shall not perform actions of any type
+
+
+
+
+
+ Interactive form fields shall not perform actions of any type
+ containsA == false
+
+ Interactive form field contains an action object ('A' key)
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml
new file mode 100644
index 00000000..641f18df
--- /dev/null
+++ b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-1:2005 - 6.6.2 Trigger events - Widgets
+ A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary
+
+
+
+
+
+ A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ A Widget annotation contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml
new file mode 100644
index 00000000..cf9dc95e
--- /dev/null
+++ b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-1:2005 - 6.6.2 Trigger events - Form fields
+ A Field dictionary shall not include an AA entry for an additional-actions dictionary
+
+
+
+
+
+ A Field dictionary shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ A Field dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml
new file mode 100644
index 00000000..f1327977
--- /dev/null
+++ b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-1:2005 - 6.6.2 Trigger events - Document
+ The document catalog dictionary shall not include an AA entry for an additional-actions dictionary
+
+
+
+
+
+ The document catalog dictionary shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ The document catalog dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t01.xml
new file mode 100644
index 00000000..b616dd8a
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - PDF/A Identification Schema.
+ The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema
+
+
+
+
+
+ The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema
+ Identification_size == 1
+
+ The document metadata stream doesn't contains PDF/A Identification Schema
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t02.xml
new file mode 100644
index 00000000..9538028d
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - Part number.
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+
+
+
+
+
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+ part == 1
+
+ The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1 conforming file
+
+ part
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml
new file mode 100644
index 00000000..97f581e6
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - Conformance level.
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of "pdfaid:conformance" as B
+
+
+
+
+
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of "pdfaid:conformance" as B
+ conformance == "B" || conformance == "A"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file
+
+ conformance
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml
new file mode 100644
index 00000000..d3eb1d3c
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - PDF/A Identification Schema property part.
+ Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+
+
+
+
+
+ Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ partPrefix == null || partPrefix == "pdfaid"
+
+ Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t05.xml
new file mode 100644
index 00000000..18511fd1
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t05.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - PDF/A Identification Schema property conformance.
+ Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+
+
+
+
+
+ Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ conformancePrefix == null || conformancePrefix == "pdfaid"
+
+ Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ conformancePrefix
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t06.xml
new file mode 100644
index 00000000..4a63ede1
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t06.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - PDF/A Identification Schema property amd.
+ Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+
+
+
+
+
+ Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ amdPrefix == null || amdPrefix == "pdfaid"
+
+ Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ amdPrefix
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t01.xml
new file mode 100644
index 00000000..3c0465fb
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.2 Properties - Contains Metadata Key
+ The document catalog dictionary of a conforming file shall contain the Metadata key
+
+
+
+
+
+ The document catalog dictionary of a conforming file shall contain the Metadata key
+ metadata_size == 1
+
+ The document catalog dictionary doesn't contain metadata key
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t02.xml
new file mode 100644
index 00000000..77a40b29
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.2 Properties - Contains Metadata Key
+ Metadata object stream dictionaries shall not contain the Filter key
+
+
+
+
+
+ Metadata object stream dictionaries shall not contain the Filter key
+ Filter == null
+
+ The metadata object stream dictionary contains the Filter key
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t01.xml
new file mode 100644
index 00000000..ea151f4c
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t01.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - CreationDate and xmp:CreateDate
+ The value of CreationDate entry from the document information dictionary, if present, and its
+ analogous XMP property "xmp:CreateDate" shall be equivalent
+
+
+
+
+
+ The value of CreationDate entry from the document information dictionary, if present, and its
+ analogous XMP property "xmp:CreateDate" shall be equivalent
+ doCreationDatesMatch != false
+
+ The value of CreationDate entry from the document Info dictionary and its matching XMP property
+ "xmp:CreateDate" are not equivalent (Info /CreationDate = %1, XMP xmp:CreateDate = %2)
+
+ CreationDate
+ XMPCreateDate
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml
new file mode 100644
index 00000000..8fb9497c
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Title and dc:title
+ The value of Title entry from the document information dictionary, if present, and its
+ analogous XMP property "dc:title['x-default']" shall be equivalent
+
+
+
+
+
+ The value of Title entry from the document information dictionary, if present, and its
+ analogous XMP property "dc:title['x-default']" shall be equivalent
+ Title == null || Title == XMPTitle
+
+ The value of Title entry from the document Info dictionary and its matching XMP property
+ "dc:title['x-default']" are not equivalent (Info /Title = %1, XMP dc:title['x-default'] = %2)
+
+ Title
+ XMPTitle
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t03.xml
new file mode 100644
index 00000000..913671f9
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t03.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Author and dc:creator
+ The value of Author entry from the document information dictionary, if present, and its
+ analogous XMP property "dc:creator" shall be equivalent. dc:creator shall contain exactly one entry
+
+
+
+
+
+ The value of Author entry from the document information dictionary, if present, and its
+ analogous XMP property "dc:creator" shall be equivalent. dc:creator shall contain exactly one entry
+ Author == null || (Author == XMPCreator && XMPCreatorSize == 1)
+
+ The value of Author entry from the document Info dictionary and its matching XMP property
+ "dc:creator" are not equivalent (Info /Author = %1, XMP dc:creator = %2)
+
+ Author
+ XMPCreator
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml
new file mode 100644
index 00000000..5ac9ce8f
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Subject and dc:description
+ The value of Subject entry from the document information dictionary, if present, and its
+ analogous XMP property "dc:description['x-default']" shall be equivalent
+
+
+
+
+
+ The value of Subject entry from the document information dictionary, if present, and its
+ analogous XMP property "dc:description['x-default']" shall be equivalent
+ Subject == null || Subject == XMPDescription
+
+ The value of Subject entry from the document Info dictionary and its matching XMP property
+ "dc:description['x-default']" are not equivalent (Info /Subject = %1, XMP dc:description['x-default'] = %2)
+
+ Subject
+ XMPDescription
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t05.xml
new file mode 100644
index 00000000..7977650d
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t05.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Keywords and pdf:Keywords
+ The value of Keywords entry from the document information dictionary, if present, and its
+ analogous XMP property "pdf:Keywords" shall be equivalent
+
+
+
+
+
+ The value of Keywords entry from the document information dictionary, if present, and its
+ analogous XMP property "pdf:Keywords" shall be equivalent
+ Keywords == null || Keywords == XMPKeywords
+
+ The value of Keywords entry from the document Info dictionary and its matching XMP property
+ "pdf:Keywords" are not equivalent (Info /Keywords = %1, XMP pdf:Keywords = %2)
+
+ Keywords
+ XMPKeywords
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t06.xml
new file mode 100644
index 00000000..deb74e4b
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t06.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Creator and xmp:CreatorTool
+ The value of Creator entry from the document information dictionary, if present, and its
+ analogous XMP property "xmp:CreatorTool" shall be equivalent
+
+
+
+
+
+ The value of Creator entry from the document information dictionary, if present, and its
+ analogous XMP property "xmp:CreatorTool" shall be equivalent
+ Creator == null || Creator == XMPCreatorTool
+
+ The value of Creator entry from the document Info dictionary and its matching XMP property
+ "xmp:CreatorTool" are not equivalent (Info /Creator = %1, XMP xmp:CreatorTool = %2)
+
+ Creator
+ XMPCreatorTool
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t07.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t07.xml
new file mode 100644
index 00000000..f6ae80ee
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t07.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Producer and pdf:Producer
+ The value of Producer entry from the document information dictionary, if present, and its
+ analogous XMP property "pdf:Producer" shall be equivalent
+
+
+
+
+
+ The value of Producer entry from the document information dictionary, if present, and its
+ analogous XMP property "pdf:Producer" shall be equivalent
+ Producer == null || Producer == XMPProducer
+
+ The value of Producer entry from the document Info dictionary and its matching XMP property
+ "pdf:Producer" are not equivalent (Info /Producer = %1, XMP pdf:Producer = %2)
+
+ Producer
+ XMPProducer
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t08.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t08.xml
new file mode 100644
index 00000000..a3306c92
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t08.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - ModDate and xmp:ModifyDate
+ The value of ModDate entry from the document information dictionary, if present, and its
+ analogous XMP property "xmp:ModifyDate" shall be equivalent
+
+
+
+
+
+ The value of ModDate entry from the document information dictionary, if present, and its
+ analogous XMP property "xmp:ModifyDate" shall be equivalent
+ doModDatesMatch != false
+
+ The value of ModDate entry from the document Info dictionary and its matching XMP property
+ "xmp:ModifyDate" are not equivalent (Info /ModDate = %1, XMP xmp:ModifyDate = %2)
+
+ ModDate
+ XMPModifyDate
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t01.xml
new file mode 100644
index 00000000..e98be2bc
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.5 XMP header - bytes attribute
+ The bytes attribute shall not be used in the header of an XMP packet
+
+
+
+
+
+ The bytes attribute shall not be used in the header of an XMP packet
+ bytes == null
+
+ The XMP Package contains bytes attribute
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t02.xml
new file mode 100644
index 00000000..b18f3093
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.5 XMP header - encoding attribute
+ The encoding attribute shall not be used in the header of an XMP packet
+
+
+
+
+
+ The encoding attribute shall not be used in the header of an XMP packet
+ encoding == null
+
+ The XMP Package contains encoding attribute
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml
new file mode 100644
index 00000000..c9b16515
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Container schema fields
+ Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause
+
+
+
+
+
+ Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause
+ containsUndefinedFields == false
+
+ An extension schema object contains field(s) %1 not defined by the specification
+
+ undefinedFields
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t02.xml
new file mode 100644
index 00000000..c4f5f9c0
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t02.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Container schema
+ The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/".
+ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas
+
+
+
+
+
+ The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/".
+ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas
+ isValidBag == true && prefix == "pdfaExtension"
+
+ The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix
+ 'pdfaExtension' (prefix = %2)
+
+ isValidBag
+ prefix
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t03.xml
new file mode 100644
index 00000000..fe699f70
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t03.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition - schema field
+ Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present
+ and shall have type Text and namespace prefix 'pdfaSchema'
+
+
+
+
+
+ Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present
+ and shall have type Text and namespace prefix 'pdfaSchema'
+ isSchemaValidText == true && schemaPrefix == "pdfaSchema"
+
+ Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix
+ 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2)
+
+ schemaPrefix
+ isSchemaValidText
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t04.xml
new file mode 100644
index 00000000..307a12be
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t04.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition - namespaceURI field
+ Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be
+ present and shall have type URI and namespace prefix 'pdfaSchema'
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be
+ present and shall have type URI and namespace prefix 'pdfaSchema'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema"
+
+ Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix
+ 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t05.xml
new file mode 100644
index 00000000..ebf64e4a
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t05.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition - prefix field
+ Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present
+ and shall have type Text and namespace prefix 'pdfaSchema'
+
+
+
+
+
+ Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present
+ and shall have type Text and namespace prefix 'pdfaSchema'
+ isPrefixValidText == true && prefixPrefix == "pdfaSchema"
+
+ Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix
+ 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t06.xml
new file mode 100644
index 00000000..151723eb
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t06.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition - property field
+ Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have
+ type Seq Property and namespace prefix 'pdfaSchema'
+
+
+
+
+
+ Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type
+ Seq Property and namespace prefix 'pdfaSchema'
+ isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema")
+
+ Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema'
+ (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2)
+
+ propertyPrefix
+ isPropertyValidSeq
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t07.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t07.xml
new file mode 100644
index 00000000..bec94fe6
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t07.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition - valueType field
+ Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type
+ Seq ValueType and namespace prefix 'pdfaSchema'
+
+
+
+
+
+ Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type
+ Seq ValueType and namespace prefix 'pdfaSchema'
+ isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema")
+
+ Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema'
+ (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2)
+
+ valueTypePrefix
+ isValueTypeValidSeq
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t08.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t08.xml
new file mode 100644
index 00000000..cf1e3fdc
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t08.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema property - name field
+ Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present
+ and shall have type Text and namespace prefix 'pdfaProperty'
+
+
+
+
+
+ Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present
+ and shall have type Text and namespace prefix 'pdfaProperty'
+ isNameValidText == true && namePrefix == "pdfaProperty"
+
+ Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix
+ 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t09.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t09.xml
new file mode 100644
index 00000000..5e233c0f
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t09.xml
@@ -0,0 +1,31 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema property - valueType field
+ Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be
+ present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall
+ be defined
+
+
+
+
+
+ Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be
+ present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall
+ be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty"
+
+ Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix
+ 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or
+ value of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t10.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t10.xml
new file mode 100644
index 00000000..53d816c1
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t10.xml
@@ -0,0 +1,30 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema property - category field
+ Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be
+ present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'
+
+
+
+
+
+ Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be
+ present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'
+ isCategoryValidText == true && (category == "external" || category == "internal") &&
+ categoryPrefix == "pdfaProperty"
+
+ Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix
+ 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or
+ has value different from external or internal (category value = %3)
+
+ categoryPrefix
+ isCategoryValidText
+ category
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t11.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t11.xml
new file mode 100644
index 00000000..3910b555
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t11.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema property - description field
+ Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be
+ present and shall have type Text and namespace prefix 'pdfaProperty'
+
+
+
+
+
+ Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be
+ present and shall have type Text and namespace prefix 'pdfaProperty'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaProperty"
+
+ Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix
+ 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t12.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t12.xml
new file mode 100644
index 00000000..0ebe7115
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t12.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type - type field
+ Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present
+ and shall have type Text and namespace prefix 'pdfaType'
+
+
+
+
+
+ Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present
+ and shall have type Text and namespace prefix 'pdfaType'
+ isTypeValidText == true && typePrefix == "pdfaType"
+
+ Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix
+ 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2)
+
+ typePrefix
+ isTypeValidText
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t13.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t13.xml
new file mode 100644
index 00000000..12afb4dd
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t13.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type - namespaceURI field
+ Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be
+ present and shall have type URI and namespace prefix 'pdfaType'
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be
+ present and shall have type URI and namespace prefix 'pdfaType'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType"
+
+ Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix
+ 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t14.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t14.xml
new file mode 100644
index 00000000..0f65a5ac
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t14.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type - prefix field
+ Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and
+ shall have type Text and namespace prefix 'pdfaType'
+
+
+
+
+
+ Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and
+ shall have type Text and namespace prefix 'pdfaType'
+ isPrefixValidText == true && prefixPrefix == "pdfaType"
+
+ Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix
+ 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t15.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t15.xml
new file mode 100644
index 00000000..971daedf
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t15.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type - description field
+ Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be
+ present and shall have type Text and namespace prefix 'pdfaType'
+
+
+
+
+
+ Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be
+ present and shall have type Text and namespace prefix 'pdfaType'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaType"
+
+ Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix
+ 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t16.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t16.xml
new file mode 100644
index 00000000..5368d800
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t16.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type - field field
+ Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type
+ Seq Field and namespace prefix 'pdfaType'
+
+
+
+
+
+ Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type
+ Seq Field and namespace prefix 'pdfaType'
+ isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType")
+
+ Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType'
+ (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2)
+
+ fieldPrefix
+ isFieldValidSeq
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t17.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t17.xml
new file mode 100644
index 00000000..4d3ae0e7
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t17.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema Field type - name field
+ Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text
+ and namespace prefix 'pdfaField'
+
+
+
+
+
+ Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text
+ and namespace prefix 'pdfaField'
+ isNameValidText == true && namePrefix == "pdfaField"
+
+ Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField'
+ (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t18.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t18.xml
new file mode 100644
index 00000000..551ffe20
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t18.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema Field type - valueType field
+ Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type
+ Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined
+
+
+
+
+
+ Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type
+ Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField"
+
+ Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix
+ 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value
+ of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t19.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t19.xml
new file mode 100644
index 00000000..83db104d
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t19.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema Field type - description field
+ Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type
+ Text and namespace prefix 'pdfaField'
+
+
+
+
+
+ Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type
+ Text and namespace prefix 'pdfaField'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaField"
+
+ Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix
+ 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t01.xml
new file mode 100644
index 00000000..43e4d97b
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.9 Validation - Conforms to XMP Specification.
+ The metadata stream shall conform to XMP Specification and well formed PDFAExtension Schema for all extensions
+
+
+
+
+
+ The metadata stream shall conform to XMP Specification and well formed PDFAExtension Schema for all extensions
+ isSerializationValid
+
+ The serialization of the metadata stream does not conform to XMP Specification
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml
new file mode 100644
index 00000000..0f1b07ca
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.9 Validation - All properties are defined
+ Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification,
+ or extension schemas that comply with XMP Specification
+
+
+
+
+
+ Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification,
+ or extension schemas that comply with XMP Specification
+ isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true
+
+ A property is either not defined in XMP Specification, or is not defined in any of the extension schemas
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t03.xml
new file mode 100644
index 00000000..fd3b9062
--- /dev/null
+++ b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-1:2005 - 6.7.9 Validation - Property's type
+ Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification,
+ or extension schemas that comply with XMP Specification
+
+
+
+
+
+ Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification,
+ or extension schemas that comply with XMP Specification
+ isValueTypeCorrect == true
+
+ XMP property does not correspond to type %1
+
+ predefinedType
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t01.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t01.xml
new file mode 100644
index 00000000..30454963
--- /dev/null
+++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-1:2005 - 6.9 Interactive Forms - Need Appearances
+ The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
+
+
+
+
+
+ The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
+ NeedAppearances == null || NeedAppearances == false
+
+ The interactive form dictionary contains the NeedAppearances flag with value true
+
+
+
+
+
+
+
diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml
new file mode 100644
index 00000000..217d6fb0
--- /dev/null
+++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-1:2005 - 6.9 Interactive Forms - Form field appearance
+ Every form field shall have an appearance dictionary associated with the field's data
+
+
+
+
+
+ Every form field shall have an appearance dictionary associated with the field's data
+ AP != null
+
+ Form field does not have an appearance dictionary associated with the field's data
+
+
+
+
+
+
+
diff --git a/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.3 Level A conformance/verapdf-profile-6-2-11-7-3-t01.xml b/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.3 Level A conformance/verapdf-profile-6-2-11-7-3-t01.xml
new file mode 100644
index 00000000..b419b7be
--- /dev/null
+++ b/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.3 Level A conformance/verapdf-profile-6-2-11-7-3-t01.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.7 Unicode character maps - Unicode PUA
+ For any character, regardless of its rendering mode, that is mapped to a code
+ or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in
+ ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a
+ character is a part
+
+
+
+
+
+ For any character, regardless of its rendering mode, that is mapped to a code
+ or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in
+ ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a
+ character is a part
+ unicodePUA == false || actualTextPresent == true
+
+ The character has Unicode value from Private Use Area, and no replacement text present
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/2a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml
new file mode 100644
index 00000000..aeb59533
--- /dev/null
+++ b/PDF_A/2a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level.
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of
+ "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
+
+
+
+
+
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of
+ "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
+ conformance == "A"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-2A conforming file
+
+ conformance
+
+
+
+
+
+
+
diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/6.7.2.2 Mark information dictionary/verapdf-profile-6-7-2-2-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/6.7.2.2 Mark information dictionary/verapdf-profile-6-7-2-2-t01.xml
new file mode 100644
index 00000000..3dfb158d
--- /dev/null
+++ b/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/6.7.2.2 Mark information dictionary/verapdf-profile-6-7-2-2-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.7.2 Tagged PDF - 6.7.2.2 Mark information dictionary
+ The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true
+
+
+
+
+
+ The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true
+ Marked == true
+
+ MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or
+ is not present in the MarkInfo dictionary (MarkInfo = %1, Marked = %2)
+
+ MarkInfo
+ Marked
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.3 Structure hierarchy/verapdf-profile-6-7-3-3-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.3 Structure hierarchy/verapdf-profile-6-7-3-3-t01.xml
new file mode 100644
index 00000000..57cdacc1
--- /dev/null
+++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.3 Structure hierarchy/verapdf-profile-6-7-3-3-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.7.3 Artefacts - StructTreeRoot
+ The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry
+ of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7
+
+
+
+
+
+ The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry
+ of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7
+ StructTreeRoot_size == 1
+
+ StructTreeRoot entry is not present in the document catalog
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t01.xml
new file mode 100644
index 00000000..24e2f1ab
--- /dev/null
+++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.7.3 Artefacts - Standard roles
+ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as
+ defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root
+
+
+
+
+
+ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as
+ defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root
+ isNotMappedToStandardType == false
+
+ Non-standard structure type %1 is not mapped to a standard type
+
+ valueS
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t02.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t02.xml
new file mode 100644
index 00000000..945ce98b
--- /dev/null
+++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t02.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.7.3 Artefacts - Circular mapping
+ A circular mapping shall not exist
+
+
+
+
+
+ A circular mapping shall not exist
+ circularMappingExist != true
+
+ A circular mapping exists for %1 structure type
+
+ valueS
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t03.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t03.xml
new file mode 100644
index 00000000..1260d8dd
--- /dev/null
+++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.7.3 Artefacts - Remapped standard types
+ Standard tags shall not be remapped to a non-standard type
+
+
+
+
+
+ Standard tags shall not be remapped to a non-standard type
+ remappedStandardType == null
+
+ The standard structure type %1 is remapped to a non-standard type
+
+ remappedStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml
new file mode 100644
index 00000000..91a3c79f
--- /dev/null
+++ b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml
@@ -0,0 +1,32 @@
+
+
+
+ ISO 19005-2:2011 - 6.7.4 Natural language specification
+ If the Lang entry is present in the document’s Catalog dictionary or in a structure element dictionary or
+ property list, its value shall be a language identifier as described in ISO 32000-1:2008, 14.9.2.
+ A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag
+ as defined in RFC 3066, Tags for the Identification of Languages
+
+
+
+
+
+ If the Lang entry is present in the document's Catalog dictionary or in a structure element dictionary or
+ property list, its value shall be a language identifier as described in ISO 32000-1:2008, 14.9.2.
+ A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag
+ as defined in RFC 3066, Tags for the Identification of Languages
+ unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue)
+
+ Value %1 of the Lang entry is not a Language-Tag
+
+ unicodeValue
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml b/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml
new file mode 100644
index 00000000..be515253
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml
@@ -0,0 +1,31 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.10 Inline image dictionaries
+ The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6,
+ or an array containing any such value
+
+
+
+
+
+ The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6,
+ or an array containing any such value
+
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" ||
+ internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" ||
+ internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" ||
+ internalRepresentation == "AHx" || internalRepresentation == "A85" ||
+ internalRepresentation == "Fl" || internalRepresentation == "RL" ||
+ internalRepresentation == "CCF" || internalRepresentation == "DCT"
+
+ Inline image uses not permitted or unknown filter %1
+
+ internalRepresentation
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml b/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml
new file mode 100644
index 00000000..8c58ba94
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.12 Permissions - UR3 and DocMDP
+ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258)
+
+
+
+
+
+ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258)
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == ''
+
+ The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP
+
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString()
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t02.xml b/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t02.xml
new file mode 100644
index 00000000..b7678748
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t02.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.12 Permissions - Digest keys
+ If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253)
+ shall not contain the keys DigestLocation, DigestMethod, and DigestValue
+
+
+
+
+
+ If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253)
+ shall not contain the keys DigestLocation, DigestMethod, and DigestValue
+ permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' ||
+ elem == 'DigestMethod' || elem == 'DigestValue').length == 0
+
+ The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary
+
+ entries.split('&').filter(elem => elem == 'DigestLocation' ||
+ elem == 'DigestMethod' || elem == 'DigestValue').toString()
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml
new file mode 100644
index 00000000..24c1595d
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.13 Implementation limits - Integer
+ A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648
+
+
+
+
+
+ A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648
+ (intValue <= 2147483647) && (intValue >= -2147483648)
+
+ Integer value %1 out of range
+
+ intValue
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml
new file mode 100644
index 00000000..0cc737b4
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.13 Implementation limits - Real (max)
+ A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38
+
+
+
+
+
+ A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38
+ (realValue >= -3.403e+38) && (realValue <= 3.403e+38)
+
+ Real value %1 out of range
+
+ realValue
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml
new file mode 100644
index 00000000..64c3e9f7
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.13 Implementation limits - String
+ A conforming file shall not contain any string longer than 32767 bytes
+
+
+
+
+
+ A conforming file shall not contain any string longer than 32767 bytes
+ value.length() < 32768
+
+ String length (%1) exceeded 32767
+
+ value.length()
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml
new file mode 100644
index 00000000..8c8663e1
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.13 Implementation limits - Name
+ A conforming file shall not contain any name longer than 127 bytes
+
+
+
+
+
+ A conforming file shall not contain any name longer than 127 bytes
+ internalRepresentation.length() <= 127
+
+ Name length (%1) exceeded 127
+
+ internalRepresentation.length()
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml
new file mode 100644
index 00000000..77340679
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.13 Implementation limits - Real (min)
+ A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38)
+
+
+
+
+
+ A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38)
+ realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38)
+
+ Non-zero real value %1 is too close to 0.0
+
+ realValue
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml
new file mode 100644
index 00000000..74445420
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.13 Implementation limits - Indirect obejcts
+ A conforming file shall not contain more than 8388607 indirect objects
+
+
+
+
+
+ A conforming file shall not contain more than 8388607 indirect objects
+ nrIndirects <= 8388607
+
+ Number of indirect objects in a PDF file (%1) exceeded 8,388,607
+
+ nrIndirects
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml
new file mode 100644
index 00000000..cfef63bf
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.13 Implementation limits - Graphics state nesting
+ A conforming file shall not nest q/Q pairs by more than 28 nesting levels
+
+
+
+
+
+ A conforming file shall not nest q/Q pairs by more than 28 nesting levels
+ nestingLevel <= 28
+
+ Depth of graphics state nesting of q/Q operators (%1) exceeded 28
+
+ nestingLevel
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml
new file mode 100644
index 00000000..d176dff8
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.13 Implementation limits - DeviceN components
+ A conforming file shall not contain a DeviceN colour space with more than 32 colourants
+
+
+
+
+
+ A conforming file shall not contain a DeviceN colour space with more than 32 colourants
+ nrComponents <= 32
+
+ Number of DeviceN components (%1) exceeded 32
+
+ nrComponents
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml
new file mode 100644
index 00000000..9bd9d345
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.13 Implementation limits - CID
+ A conforming file shall not contain a CID value greater than 65535
+
+
+
+
+
+ A conforming file shall not contain a CID value greater than 65535
+ maximalCID <= 65535
+
+ Value of a CID (%1) exceeded 65,535
+
+ maximalCID
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml
new file mode 100644
index 00000000..68c9bf51
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.13 Implementation limits - page boundaries
+ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction,
+ nor shall it be greater than 14 400 units in either direction
+
+
+
+
+
+ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units
+ in either direction, nor shall it be greater than 14 400 units in either direction
+ Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400
+
+ One of the page boundaries is out of range (valid range: 3 - 14400, height = %1, width = %2)
+
+ Math.abs(top - bottom)
+ Math.abs(right - left)
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml
new file mode 100644
index 00000000..a840e1b6
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.2 File header - PDF header
+ The file header shall begin at byte zero and shall consist of “%PDF-1.n” followed by a single EOL marker,
+ where 'n' is a single digit number between 0 (30h) and 7 (37h)
+
+
+
+
+
+ The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker,
+ where 'n' is a single digit number between 0 (30h) and 7 (37h)
+ headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header)
+
+ File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n,
+ where 'n' is a single digit number between 0 and 7
+
+ header
+ headerOffset
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml
new file mode 100644
index 00000000..6167a331
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.2 File header - Binary comment
+ The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values
+ shall have a decimal value greater than 127
+
+
+
+
+
+ The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded
+ byte values shall have a decimal value greater than 127
+ headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
+
+ Binary comment in the file header is missing or does not start with 4 bytes with byte values
+ above 127 (first four bytes = %1, %2, %3, %4)
+
+ headerByte1
+ headerByte2
+ headerByte3
+ headerByte4
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml
new file mode 100644
index 00000000..26b29e7d
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.3 File trailer - ID keyword
+ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4
+
+
+
+
+
+ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4
+ lastID != null && lastID.length() > 0
+
+ Missing or empty ID in the document trailer
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml
new file mode 100644
index 00000000..c161e192
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.3 File trailer - Encrypt
+ The keyword Encrypt shall not be used in the trailer dictionary
+
+
+
+
+
+ The keyword Encrypt shall not be used in the trailer dictionary
+ isEncrypted != true
+
+ Encrypt keyword is present in the trailer dictionary
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml
new file mode 100644
index 00000000..0b3b5d93
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.3 File trailer - EOF
+ No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5
+
+
+
+
+
+ No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5
+ postEOFDataSize == 0
+
+ %1 byte(s) of data is present after the last end-of-file marker
+
+ postEOFDataSize
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml b/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml
new file mode 100644
index 00000000..3a637a3c
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.4 Cross reference table - Spacings after xref
+ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker
+
+
+
+
+
+ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker
+ xrefEOLMarkersComplyPDFA
+
+ Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml
new file mode 100644
index 00000000..5a3f97d1
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.6 String objects - Even number of characters
+ Hexadecimal strings shall contain an even number of non-white-space characters
+
+
+
+
+
+ Hexadecimal strings shall contain an even number of non-white-space characters
+ (isHex != true) || hexCount % 2 == 0
+
+ A hexadecimal string contains odd number (%1) of non-white-space characters
+
+ hexCount
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml
new file mode 100644
index 00000000..88a118f0
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.6 String objects - Characters range
+ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)
+
+
+
+
+
+ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)
+ (isHex != true) || containsOnlyHex == true
+
+ Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t01.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t01.xml
new file mode 100644
index 00000000..85f83376
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t01.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.1 General - Correct Length
+ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character
+ after the stream keyword and preceding the EOL marker before the endstream keyword
+
+
+
+
+
+ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character
+ after the stream keyword and preceding the EOL marker before the endstream keyword
+ Length == realLength
+
+ Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s))
+
+ realLength
+ Length
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t02.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t02.xml
new file mode 100644
index 00000000..2f7a39ba
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.1 General - Keywords spacing
+ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character.
+ The endstream keyword shall be preceded by an EOL marker
+
+
+
+
+
+ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah)
+ character. The endstream keyword shall be preceded by an EOL marker
+ streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true
+
+ Extra spacings or missing EOL characters around keywords 'stream' and 'endstream'
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t03.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t03.xml
new file mode 100644
index 00000000..d744df40
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t03.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.1 General - File specification
+ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys
+
+
+
+
+
+ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys
+ F == null && FFilter == null && FDecodeParms == null
+
+ A stream object dictionary contains %1 key(s)
+
+ keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString()
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.2 Filters/verapdf-profile-6-1-7-2-t01.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.2 Filters/verapdf-profile-6-1-7-2-t01.xml
new file mode 100644
index 00000000..fd8003d5
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.2 Filters/verapdf-profile-6-1-7-2-t01.xml
@@ -0,0 +1,34 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.2 Filters
+ All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of
+ LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode
+ parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be
+ used
+
+
+
+
+
+ All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of
+ LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode
+ parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be
+ used
+
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" ||
+ internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" ||
+ internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" ||
+ internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" ||
+ (internalRepresentation == "Crypt" && decodeParms == "Identity")
+
+ Unknown or not permitted Stream filter %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml b/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml
new file mode 100644
index 00000000..6f9477cb
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.8 Name objects
+ Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with
+ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences
+
+
+
+
+
+ Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with
+ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences
+ isValidUtf8 == true
+
+ The name value %1 does not represent a correct UTF-8 character sequence
+
+ unicodeValue
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml b/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml
new file mode 100644
index 00000000..a7624cb0
--- /dev/null
+++ b/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.1.9 Indirect objects - Spacings
+ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be
+ separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj
+ keywords shall each be followed by an EOL marker
+
+
+
+
+
+ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be
+ separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj
+ keywords shall each be followed by an EOL marker
+ spacingCompliesPDFA
+
+ Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj'
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t01.xml b/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t01.xml
new file mode 100644
index 00000000..1d704de1
--- /dev/null
+++ b/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.10 Use of alternate presentations and transitions - AlternatePresentations
+ There shall be no AlternatePresentations entry in the document's name dictionary
+
+
+
+
+
+ There shall be no AlternatePresentations entry in the document's name dictionary
+ containsAlternatePresentations == false
+
+ The document's name dictionary contains the AlternatePresentations entry
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t02.xml b/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t02.xml
new file mode 100644
index 00000000..b91a3bea
--- /dev/null
+++ b/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.10 Use of alternate presentations and transitions - PresSteps
+ There shall be no PresSteps entry in any Page dictionary
+
+
+
+
+
+ There shall be no PresSteps entry in any Page dictionary
+ containsPresSteps == false
+
+ A Page dictionary contains the PresSteps entry
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.11 Document requirements/verapdf-profile-6-11-t01.xml b/PDF_A/2b/6.11 Document requirements/verapdf-profile-6-11-t01.xml
new file mode 100644
index 00000000..0cbbd7f1
--- /dev/null
+++ b/PDF_A/2b/6.11 Document requirements/verapdf-profile-6-11-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.11 Document requirements
+ The document catalog shall not contain the Requirements key
+
+
+
+
+
+ The document catalog shall not contain the Requirements key
+ Requirements == null
+
+ The document catalog contains the Requirements key
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml
new file mode 100644
index 00000000..f33cd5b1
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml
@@ -0,0 +1,33 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.10 Transparency - Blend modes
+ Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary
+
+
+
+
+
+ Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary
+ internalRepresentation == "Normal" || internalRepresentation == "Compatible" ||
+ internalRepresentation == "Multiply" || internalRepresentation == "Screen" ||
+ internalRepresentation == "Overlay" || internalRepresentation == "Darken" ||
+ internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" ||
+ internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" ||
+ internalRepresentation == "SoftLight" || internalRepresentation == "Difference" ||
+ internalRepresentation == "Exclusion" || internalRepresentation == "Hue" ||
+ internalRepresentation == "Saturation" || internalRepresentation == "Color" ||
+ internalRepresentation == "Luminosity"
+
+ The document uses the blend mode %1 not defined in ISO 32000-1:2008
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml
new file mode 100644
index 00000000..ade963be
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml
@@ -0,0 +1,32 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.10 Transparency - Page transparency
+ If the document does not contain a PDF/A OutputIntent, then all Page objects
+ that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that
+ Group key shall include a CS entry whose value shall be used as the default blending colour space
+
+
+
+
+
+ If the document does not contain a PDF/A OutputIntent, then all Page objects
+ that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that
+ Group key shall include a CS entry whose value shall be used as the default blending colour space
+ gOutputCS != null || containsGroupCS == true || containsTransparency == false
+
+ The page contains transparent objects with no blending colour space defined
+
+
+
+
+
+
+
+
+
+ null
+ S == "GTS_PDFA1" ? colorSpace : gOutputCS
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml
new file mode 100644
index 00000000..1d2ff703
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml
@@ -0,0 +1,32 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - Type entry
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to
+ the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary
+ Type == "Font"
+
+ A Font dictionary has value %1 of Type entry instead of Font
+
+ Type
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml
new file mode 100644
index 00000000..5993b6cc
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml
@@ -0,0 +1,37 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - Subtype entry
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts
+ "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts
+ "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts
+ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0"
+ || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
+
+ Invalid Subtype entry in font dictionary with value %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml
new file mode 100644
index 00000000..f40fd7d7
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - BaseFont entry
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ BaseFont - name - (Required) The PostScript name of the font
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ BaseFont - name - (Required) The PostScript name of the font
+ Subtype == "Type3" || fontName != null
+
+ A BaseFont entry is missing or has invalid type
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml
new file mode 100644
index 00000000..db8a63ae
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - FirstChar entry
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array
+ isStandard == true || FirstChar != null
+
+ A non-standard simple font dictionary has missing or invalid FirstChar entry
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml
new file mode 100644
index 00000000..a8b807f3
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - LastChat entry
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array
+ isStandard == true || LastChar != null
+
+ A non-standard simple font dictionary has missing or invalid LastChar entry
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml
new file mode 100644
index 00000000..d236055b
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml
@@ -0,0 +1,31 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - Widths entry
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths
+ isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
+
+ Widths array is missing or has invalid size %1 instead of %2
+
+ Widths_size
+ LastChar - FirstChar + 1
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml
new file mode 100644
index 00000000..290e2ca0
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml
@@ -0,0 +1,33 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - embedded font Subtype
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5.
+ The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are
+ Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented
+ in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5.
+ The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are
+ Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented
+ in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4
+ fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType"
+
+ Unsupported font file format %1 of the embedded font
+
+ fontFileSubtype
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.1 General/verapdf-profile-6-2-11-3-1-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.1 General/verapdf-profile-6-2-11-3-1-t01.xml
new file mode 100644
index 00000000..0c667230
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.1 General/verapdf-profile-6-2-11-3-1-t01.xml
@@ -0,0 +1,42 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CIDSystemInfo
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary
+ shall have the following relationship:
+ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering,
+ and Supplement may be used in the CIDSystemInfo entry of the CIDFont.
+ - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in
+ the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap
+
+
+
+
+
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary
+ shall have the following relationship:
+ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering,
+ and Supplement may be used in the CIDSystemInfo entry of the CIDFont.
+ - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in
+ the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null &&
+ CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry &&
+ CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement)
+
+ CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible
+ (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3,
+ CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+ CIDFontSupplement
+ CMapSupplement
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.2 CIDFonts/verapdf-profile-6-2-11-3-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.2 CIDFonts/verapdf-profile-6-2-11-3-2-t01.xml
new file mode 100644
index 00000000..739976f1
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.2 CIDFonts/verapdf-profile-6-2-11-3-2-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CIDToGIDMap
+ ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a
+ CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-1:2008, 9.7.4, Table 117
+
+
+
+
+
+ ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a
+ CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-1:2008, 9.7.4, Table 117
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t01.xml
new file mode 100644
index 00000000..77161776
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t01.xml
@@ -0,0 +1,42 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CMaps
+ All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described
+ in ISO 32000-1:2008, 9.7.5
+
+
+
+
+
+ All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described
+ in ISO 32000-1:2008, 9.7.5
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" ||
+ CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" ||
+ CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" ||
+ CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" ||
+ CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" ||
+ CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" ||
+ CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" ||
+ CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" ||
+ CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" ||
+ CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" ||
+ CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" ||
+ CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" ||
+ CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" ||
+ CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" ||
+ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" ||
+ embeddedFile_size == 1
+
+ A non-standard CMap %1 is not embedded
+
+ CMapName
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t02.xml
new file mode 100644
index 00000000..8510c97e
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t02.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - WMode
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode
+ value in the embedded CMap stream
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value
+ in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t03.xml
new file mode 100644
index 00000000..76218788
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t03.xml
@@ -0,0 +1,40 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CMaps
+ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118
+
+
+
+
+
+ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" ||
+ CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" ||
+ CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" ||
+ CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" ||
+ CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" ||
+ CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" ||
+ CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" ||
+ CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" ||
+ CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" ||
+ CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" ||
+ CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" ||
+ CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" ||
+ CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" ||
+ CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" ||
+ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" ||
+ CMapName == "UniKS-UTF16-V"
+
+ A CMap references another non-standard CMap %1
+
+ CMapName
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t01.xml
new file mode 100644
index 00000000..2c0b5957
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - General
+ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9
+
+
+
+
+
+ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t02.xml
new file mode 100644
index 00000000..dd3de977
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t02.xml
@@ -0,0 +1,31 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - Glyphs
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file.
+ A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt
+ from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes
+ shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of
+ a non-standard mapping chosen by the conforming processor
+
+
+
+
+
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file.
+ A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt
+ from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes
+ shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of
+ a non-standard mapping chosen by the conforming processor
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t01.xml
new file mode 100644
index 00000000..52ff9b71
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - CharSet entry in Type1 fonts
+ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs
+ present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs
+ present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true
+
+ A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t02.xml
new file mode 100644
index 00000000..38f9e6b7
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - CIDSet entry in CID Fonts
+ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program,
+ regardless of whether a CID in the font is referenced or used by the PDF or not
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program,
+ regardless of whether a CID in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true
+
+ A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metrics/verapdf-profile-6-2-11-5-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metrics/verapdf-profile-6-2-11-5-t01.xml
new file mode 100644
index 00000000..e415b527
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metrics/verapdf-profile-6-2-11-5-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.5 Font metrics
+ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded
+ font program shall be consistent
+
+
+
+
+
+ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded
+ font program shall be consistent
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null ||
+ Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml
new file mode 100644
index 00000000..ff535ebf
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - cmaps for non-symbolic TrueType fonts
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic
+ cmap entries such that all necessary glyph lookups can be carried out
+
+
+
+
+
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic
+ cmap entries such that all necessary glyph lookups can be carried out
+ isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0)
+
+ The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml
new file mode 100644
index 00000000..6f083448
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml
@@ -0,0 +1,37 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - Non-symbolic TrueType fonts
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the
+ value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the
+ dictionary that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic
+ TrueType fonts shall not define a Differences array unless all of the glyph names in the Differences
+ array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft
+ Unicode (3,1 – Platform ID = 3, Encoding ID = 1) encoding in the 'cmap' table
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the
+ value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the
+ dictionary that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic
+ TrueType fonts shall not define a Differences array unless all of the glyph names in the Differences
+ array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft
+ Unicode (3,1 – Platform ID = 3, Encoding ID = 1) encoding in the 'cmap' table
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") &&
+ (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List
+ (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t03.xml
new file mode 100644
index 00000000..e8ffe8c4
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t03.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - Symbolic TrueType fonts
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+
+
+
+
+
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml
new file mode 100644
index 00000000..88141219
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - cmaps in the symbolic TrueType font program
+ The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either
+ exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3,
+ Encoding ID=0) encoding
+
+
+
+
+
+ The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either
+ exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3,
+ Encoding ID=0) encoding
+ isSymbolic == false || nrCmaps == 1 || cmap30Present == true
+
+ The embedded font program for a symbolic TrueType font contains %1 cmap subtables and
+ does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0)
+
+ nrCmaps
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml
new file mode 100644
index 00000000..b1659635
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.8 Use of .notdef glyph
+ A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators,
+ regardless of text rendering mode, in any content stream
+
+
+
+
+
+ A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing
+ operators, regardless of text rendering mode, in any content stream
+ name != ".notdef"
+
+ The document contains a reference to the .notdef glyph
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml
new file mode 100644
index 00000000..859d43d9
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.2 Content streams
+ Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators
+
+
+
+
+
+ Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed
+ by the BX/EX compatibility operators
+ false
+
+ A content stream contains operator %1 not defined in ISO 32000-1
+
+ name
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml
new file mode 100644
index 00000000..b6997b91
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.2 Content streams - Resources dictionary
+ A content stream that references other objects, such as images and fonts that are necessary to fully render or
+ process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3
+
+
+
+
+
+ A content stream that references other objects, such as images and fonts that are necessary to fully render or
+ process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3
+ inheritedResourceNames == ''
+
+ A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary
+
+ inheritedResourceNames
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml
new file mode 100644
index 00000000..990220fd
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.3 Output intent - Valid ICC output profile
+ The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile
+ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK"
+
+
+
+
+
+ The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile
+ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK"
+ (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0
+
+ The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3)
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml
new file mode 100644
index 00000000..cb9e9fb5
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.3 Output intent - Matching multiple output profiles
+ If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005
+ and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same
+ indirect object, which shall be a valid ICC profile stream
+
+
+
+
+
+ If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant
+ with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a
+ DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC
+ profile stream
+ sameOutputProfileIndirect == true
+
+ File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1)
+
+ outputProfileIndirects
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml
new file mode 100644
index 00000000..0a40aa0a
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.3 Output intent - DestOutputProfileRef entry
+ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent
+
+
+
+
+
+ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent
+ S != 'GTS_PDFX' || containsDestOutputProfileRef == false
+
+ The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml
new file mode 100644
index 00000000..097a5c37
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased colour spaces
+ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1
+
+
+
+
+
+ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1
+ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") &&
+ (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0
+
+ The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml
new file mode 100644
index 00000000..11a46f79
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased CMYK and OPM
+ Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is
+ used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for
+ fill is set to true, or both
+
+
+
+
+
+ Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is
+ used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for
+ fill is set to true, or both
+ overprintFlag == false || OPM == 0
+
+ Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting
+
+ OPM
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml
new file mode 100644
index 00000000..547515ad
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceRGB
+ DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the
+ DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile
+
+
+
+
+
+ DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used,
+ or if the file has a PDF/A OutputIntent that contains an RGB destination profile
+ gOutputCS != null && gOutputCS == "RGB "
+
+ DeviceRGB colour space is used without RGB output intent profile
+
+
+
+
+
+
+
+ null
+ S == "GTS_PDFA1" ? colorSpace : gOutputCS
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml
new file mode 100644
index 00000000..65a36046
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceCMYK
+ DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space
+ has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile
+
+
+
+
+
+ DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space
+ has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile
+ gOutputCS != null && gOutputCS == "CMYK"
+
+ DeviceCMYK colour space is used without CMYK output intent profile
+
+
+
+
+
+
+
+ null
+ S == "GTS_PDFA1" ? colorSpace : gOutputCS
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml
new file mode 100644
index 00000000..60050c66
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceGray
+ DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used,
+ or if a PDF/A OutputIntent is present
+
+
+
+
+
+ DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used,
+ or if a PDF/A OutputIntent is present
+ gOutputCS != null
+
+ DeviceGray colour space is used without output intent profile
+
+
+
+
+
+
+
+ null
+ S == "GTS_PDFA1" ? colorSpace : gOutputCS
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml
new file mode 100644
index 00000000..7317188a
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.4 Separation and DeviceN colour spaces - DeviceN colorants
+ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present
+
+
+
+
+
+ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present
+ areColorantsPresent == true
+
+ A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml
new file mode 100644
index 00000000..c6ad33b0
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.4 Separation and DeviceN colour spaces - Consistency of Separations
+ All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the
+ same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the
+ use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored
+
+
+
+
+
+ All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the
+ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF
+ objects shall be compared, rather than the computational result of the use of those PDF objects. Compression
+ and whether or not an object is direct or indirect shall be ignored
+ areTintAndAlternateConsistent == true
+
+ Several occurrences of a Separation colour space with the same name are not consistent
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml
new file mode 100644
index 00000000..27db9a4a
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.5 Extended graphics state - TR key
+ An ExtGState dictionary shall not contain the TR key
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR key
+ TR == null
+
+ An ExtGState dictionary contains the TR key
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml
new file mode 100644
index 00000000..c1f05b40
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.5 Extended graphics state - TR2 key
+ An ExtGState dictionary shall not contain the TR2 key with a value other than Default
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR2 key with a value other than Default
+ TR2 == null || TR2 == "Default"
+
+ An ExtGState dictionary contains the TR2 key with value %1 other than Default
+
+ TR2
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml
new file mode 100644
index 00000000..c50d5db4
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.5 Extended graphics state - HTP key
+ An ExtGState dictionary shall not contain the HTP key
+
+
+
+
+
+ An ExtGState dictionary shall not contain the HTP key
+ containsHTP == false
+
+ An ExtGState dictionary contains the HTP key
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml
new file mode 100644
index 00000000..17e7ed8e
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.5 Extended graphics state - Halftone type
+ All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key
+
+
+
+
+
+ All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key
+ HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5)
+
+ A Halftone has type %1 instead of 1 or 5
+
+ HalftoneType
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml
new file mode 100644
index 00000000..679a62ad
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.5 Extended graphics state - Halftone name
+ Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key
+
+
+
+
+
+ Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key
+ HalftoneName == null
+
+ A Halftone dictionary contains the HalftoneName key
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml
new file mode 100644
index 00000000..2c0f2578
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.5 Extended graphics state - TransferFunction in halftones
+ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1
+
+
+
+
+
+ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1
+ colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' ||
+ colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ?
+ TransferFunction == null : TransferFunction != null)
+
+ Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml
new file mode 100644
index 00000000..662af6f0
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.6 Rendering intents
+ Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008,
+ Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation
+
+
+
+
+
+ Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008,
+ Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation
+ internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation"
+
+ A rendering intent with non-standard value %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml
new file mode 100644
index 00000000..6b1a46cc
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.8 Images - Alternates
+ An Image dictionary shall not contain the Alternates key
+
+
+
+
+
+ An Image dictionary shall not contain the Alternates key
+ containsAlternates == false
+
+ Alternates key is present in the Image dictionary
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml
new file mode 100644
index 00000000..de6b8064
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.8 Images - OPI
+ An Image dictionary shall not contain the OPI key
+
+
+
+
+
+ An Image dictionary shall not contain the OPI key
+ containsOPI == false
+
+ OPI key is present in the Image dictionary
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml
new file mode 100644
index 00000000..80712cb1
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.8 Images - Interpolate
+ If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image,
+ the I key shall have a value of false
+
+
+
+
+
+ If an Image dictionary contains the Interpolate key, its value shall be false.
+ For an inline image, the I key shall have a value of false
+ Interpolate == false
+
+ The value of the Interpolate key in the Image dictionary is true
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t04.xml
new file mode 100644
index 00000000..dfb3913a
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t04.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.8 Images - BitsPerComponent
+ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16
+
+
+
+
+
+ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16
+ BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 ||
+ BitsPerComponent == 8 || BitsPerComponent == 16
+
+ The value of the BitsPerComponent key in the Image dictionary is %1
+
+ BitsPerComponent
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t01.xml
new file mode 100644
index 00000000..85513a9c
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.8.3 JPEG2000 - Number of channels
+ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4
+
+
+
+
+
+ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4
+ nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4
+
+ JPEG2000 image has %1 colour channels that is neither 1, 3 or 4
+
+ nrColorChannels
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml
new file mode 100644
index 00000000..77d74f3c
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.8.3 JPEG2000 - Colour spaces with APPROX field
+ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space
+ specification that has the value 0x01 in the APPROX field
+
+
+
+
+
+ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space
+ specification that has the value 0x01 in the APPROX field
+ hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1
+
+ The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field)
+
+ nrColorSpacesWithApproxField
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml
new file mode 100644
index 00000000..be9f6f2c
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.8.3 JPEG2000 - Colour specification method
+ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only
+ that colour space and shall ignore all other colour space specifications
+
+
+
+
+
+ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only
+ that colour space and shall ignore all other colour space specifications
+ hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3
+
+ Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03
+
+ colrMethod
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t04.xml
new file mode 100644
index 00000000..806190c8
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t04.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.8.3 JPEG2000 - Enumerated colour space
+ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used
+
+
+
+
+
+ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used
+ hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19
+
+ JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml
new file mode 100644
index 00000000..df6fffe2
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.8.3 JPEG2000 - Bit-depth
+ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth
+
+
+
+
+
+ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth
+ bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38)
+
+ JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range
+ ('bpcc' box present = %1, bit depth = %2)
+
+ bpccBoxPresent
+ bitDepth
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml
new file mode 100644
index 00000000..8d943e01
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.9 Form XObjects - 6.2.9.1 Form XObjects
+ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key
+
+
+
+
+
+ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key
+ (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false
+
+ The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml
new file mode 100644
index 00000000..caa62e66
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.9 XObjects - 6.2.9.2 Reference XObjects
+ A conforming file shall not contain any reference XObjects
+
+
+
+
+
+ A conforming file shall not contain any reference XObjects
+ containsRef == false
+
+ The document contains a reference XObject (Ref key in the form XObject dictionary)
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml
new file mode 100644
index 00000000..932c666e
--- /dev/null
+++ b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.9 XObjects - 6.2.9.3 PostScript XObjects
+ A conforming file shall not contain any PostScript XObjects
+
+
+
+
+
+ A conforming file shall not contain any PostScript XObjects
+ Subtype != "PS"
+
+ The document contains a PostScript XObject
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml b/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml
new file mode 100644
index 00000000..42a3eda5
--- /dev/null
+++ b/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml
@@ -0,0 +1,30 @@
+
+
+
+ ISO 19005-2:2011 - 6.3.1 Annotation types
+ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted
+
+
+
+
+
+ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted
+ Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" ||
+ Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" ||
+ Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" ||
+ Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" ||
+ Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" ||
+ Subtype == "Watermark" || Subtype == "Redact"
+
+ Unknown or not permitted Annotation type %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml
new file mode 100644
index 00000000..c474d7ce
--- /dev/null
+++ b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.3.2 Annotation dictionaries - F key
+ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key
+
+
+
+
+
+ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key
+ Subtype == "Popup" || F != null
+
+ A dictionary of %1 annotation does not contain F key
+
+ Subtype
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml
new file mode 100644
index 00000000..f5682ab0
--- /dev/null
+++ b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-2:2011 - 6.3.2 Annotation dictionaries - Generic flag values
+ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0
+
+
+
+
+
+ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0
+ F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0)
+
+ Annotation flags are set the annotation to be hidden/invisible or non-printable
+ (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6)
+
+ F
+ (F & 4) >> 2
+ (F & 2) >> 1
+ (F & 1)
+ (F & 32) >> 5
+ (F & 256) >> 8
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml
new file mode 100644
index 00000000..449a5c9b
--- /dev/null
+++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.3.3 Annotations appearances - Normal appearance
+ Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below,
+ shall have at least one appearance dictionary:
+ - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4;
+ - annotations whose Subtype value is Popup or Link
+
+
+
+
+
+ Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below,
+ shall have at least one appearance dictionary:
+ - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4;
+ - annotations whose Subtype value is Popup or Link
+ (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null
+
+ An annotation does not contain an appearance dictionary
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml
new file mode 100644
index 00000000..ed505b31
--- /dev/null
+++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.3.3 Annotations appearances - Normal appearance
+ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as
+ its value shall contain only the N key
+
+
+
+
+
+ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines
+ as its value shall contain only the N key
+ AP == null || AP == "N"
+
+ Annotation's appearance dictionary contains entries %1 other than N
+
+ AP.split('&').filter(elem => elem != 'N').toString()
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml
new file mode 100644
index 00000000..a3b97e45
--- /dev/null
+++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-2:2011 - 6.3.3 Annotations appearances - Normal appearance
+ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn,
+ the value of the N key shall be an appearance subdictionary
+
+
+
+
+
+ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of
+ Btn, the value of the N key shall be an appearance subdictionary
+ AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0)
+
+ An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of
+ Btn, but the value of the N key is %1 instead of appearance subdictionary
+
+ N_type
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml
new file mode 100644
index 00000000..60bc76a9
--- /dev/null
+++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.3.3 Annotations appearances - Normal appearance
+ If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated
+ with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
+
+
+
+
+
+ If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated
+ with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
+ AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream"
+
+ An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the
+ value of the N key is not an appearance stream
+
+ Subtype
+ FT
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml
new file mode 100644
index 00000000..9be673df
--- /dev/null
+++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.4 Interactive Fields - 6.4.1 General - Widget annotation actions
+ A Widget annotation dictionary shall not contain the A or AA keys
+
+
+
+
+
+ A Widget annotation dictionary shall not contain the A or AA keys
+ containsA == false && containsAA == false
+
+ A Widget annotation contains %1 key(s)
+
+ entries.split('&').filter(elem => elem == 'A' || elem == 'AA').toString()
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml
new file mode 100644
index 00000000..477d308c
--- /dev/null
+++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.4 Interactive forms - 6.4.1 General - Form field actions
+ A Field dictionary shall not contain the A or AA keys
+
+
+
+
+
+ A Field dictionary shall not contain the A or AA keys
+ containsAA == false
+
+ A Form field dictionary contains the AA entry
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml
new file mode 100644
index 00000000..9bfc3305
--- /dev/null
+++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.4 Interactive Forms - 6.4.1 General - NeedAppearances flag
+ The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
+
+
+
+
+
+ The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
+ NeedAppearances == null || NeedAppearances == false
+
+ The interactive form dictionary contains the NeedAppearances flag with value true
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml
new file mode 100644
index 00000000..f954b49f
--- /dev/null
+++ b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.4 Interactive Forms - 6.4.2 XFA forms - XFA key
+ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file,
+ if present, shall not contain the XFA key
+
+
+
+
+
+ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file,
+ if present, shall not contain the XFA key
+ containsXFA == false
+
+ The interactive form dictionary contains the XFA key
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml
new file mode 100644
index 00000000..50ca3dc5
--- /dev/null
+++ b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.4 Interactive Forms - 6.4.2 XFA forms - NeedsRendering flag
+ A document's Catalog shall not contain the NeedsRendering key
+
+
+
+
+
+ A document's Catalog shall not contain the NeedsRendering key
+ NeedsRendering == false
+
+ A document's Catalog contains NeedsRendering flag set to true
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml
new file mode 100644
index 00000000..f6036e78
--- /dev/null
+++ b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-2:2011 - 6.4.3 Digital signatures - ByteRange
+ When computing the digest for the file, it shall be computed over the entire file, including the signature
+ dictionary but excluding the PDF Signature itself
+
+
+
+
+
+ When computing the digest for the file, it shall be computed over the entire file, including the signature
+ dictionary but excluding the PDF Signature itself
+ doesByteRangeCoverEntireDocument == true
+
+ ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself)
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml
new file mode 100644
index 00000000..cc00ec8f
--- /dev/null
+++ b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 19005-2:2011 - 6.4.3 Digital signatures - Certificate of PKCS#7 object
+ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of
+ the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At
+ minimum, it shall include the signer's X.509 signing certificate
+
+
+
+
+
+ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of
+ the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At
+ minimum, it shall include the signer's X.509 signing certificate
+ signingCertificatePresent == true
+
+ The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t03.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t03.xml
new file mode 100644
index 00000000..c440dcbf
--- /dev/null
+++ b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t03.xml
@@ -0,0 +1,31 @@
+
+
+
+ ISO 19005-2:2011 - 6.4.3 Digital signatures - Signer of PKCS#7 object
+ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of
+ the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At
+ minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature
+
+
+
+
+
+ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of
+ the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At
+ minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature
+ SignerInfoCount == 1
+
+ The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1
+ signer(s) in the PDF Signature instead of one
+
+ SignerInfoCount
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml
new file mode 100644
index 00000000..a2a7f77d
--- /dev/null
+++ b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.5 Actions - 6.5.1 General - Action types
+ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted.
+ Additionally, the deprecated set-state and no-op actions shall not be permitted
+
+
+
+
+
+ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted.
+ Additionally, the deprecated set-state and no-op actions shall not be permitted
+ S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"
+
+ Unknown or not permitted Action type %1
+
+ S
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml
new file mode 100644
index 00000000..ee777b92
--- /dev/null
+++ b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.5 Actions - 6.5.1 General - Named actions
+ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
+
+
+
+
+
+ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
+ N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
+
+ Unknown or not permitted named action %1
+
+ N
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml
new file mode 100644
index 00000000..a0660d20
--- /dev/null
+++ b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.5.2 Trigger events - Document
+ The document's Catalog shall not include an AA entry for an additional-actions dictionary
+
+
+
+
+
+ The document's Catalog shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ The document catalog dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml
new file mode 100644
index 00000000..a8c5436f
--- /dev/null
+++ b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.5.2 Trigger events - Page
+ The Page dictionary shall not include an AA entry for an additional-actions dictionary
+
+
+
+
+
+ The Page dictionary shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ The Page dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml
new file mode 100644
index 00000000..e44a6914
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.1 General - Metadata key in the Catalog
+ The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2
+
+
+
+
+
+ The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2
+ metadata_size == 1
+
+ The document catalog dictionary doesn't contain metadata key
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t02.xml
new file mode 100644
index 00000000..f90c03d9
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.1 General - bytes attribute
+ The bytes attribute shall not be used in the header of an XMP packet
+
+
+
+
+
+ The bytes attribute shall not be used in the header of an XMP packet
+ bytes == null
+
+ The XMP Package contains bytes attribute
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t03.xml
new file mode 100644
index 00000000..7ac14b62
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t03.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.1 General - encoding attribute
+ The encoding attribute shall not be used in the header of an XMP packet
+
+
+
+
+
+ The encoding attribute shall not be used in the header of an XMP packet
+ encoding == null
+
+ The XMP Package contains encoding attribute
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml
new file mode 100644
index 00000000..103abb9f
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.1 General - Conforms to XMP Specification.
+ All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed,
+ as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised)
+
+
+
+
+
+ All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed,
+ as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised)
+ isSerializationValid
+
+ A metadata stream is serialized incorrectly and can not be parsed
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml
new file mode 100644
index 00000000..0a8ada6c
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.1 General - Conforms to XMP Specification.
+ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8
+
+
+
+
+
+ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8
+ actualEncoding == "UTF-8"
+
+ The XMP package uses encoding %1 different from UTF-8
+
+ actualEncoding
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t01.xml
new file mode 100644
index 00000000..bf4eba1c
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - All properties are defined
+ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification,
+ ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2
+
+
+
+
+
+ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification,
+ ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2
+ isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true
+
+ XMP property is either not predefined, or is not defined in any XMP extension schema
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t02.xml
new file mode 100644
index 00000000..2a6db16b
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t02.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Property's type
+ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification,
+ ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2
+
+
+
+
+
+ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification,
+ ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2
+ isValueTypeCorrect == true
+
+ XMP property does not correspond to type %1
+
+ predefinedType
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.2 Extension schemas/verapdf-profile-6-6-2-3-2-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.2 Extension schemas/verapdf-profile-6-6-2-3-2-t01.xml
new file mode 100644
index 00000000..9a5559bb
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.2 Extension schemas/verapdf-profile-6-6-2-3-2-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Container schema
+ Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each
+ of the tables in 6.6.2.3.3 shall be present in any extension schema container schema
+
+
+
+
+
+ Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each
+ of the tables in 6.6.2.3.3 shall be present in any extension schema container schema
+ containsUndefinedFields == false
+
+ An extension schema object contains field(s) %1 not defined by the specification
+
+ undefinedFields
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t01.xml
new file mode 100644
index 00000000..d70effef
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Container schema
+ The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/".
+ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas
+
+
+
+
+
+ The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/".
+ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas
+ isValidBag == true && prefix == "pdfaExtension"
+
+ The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix
+ 'pdfaExtension' (prefix = %2)
+
+ isValidBag
+ prefix
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t02.xml
new file mode 100644
index 00000000..c63baf60
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t02.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema definition - schema field
+ Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present
+ and shall have type Text and namespace prefix 'pdfaSchema'
+
+
+
+
+
+ Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present
+ and shall have type Text and namespace prefix 'pdfaSchema'
+ isSchemaValidText == true && schemaPrefix == "pdfaSchema"
+
+ Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix
+ 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2)
+
+ schemaPrefix
+ isSchemaValidText
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t03.xml
new file mode 100644
index 00000000..cb7f3851
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t03.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema definition - namespaceURI field
+ Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be
+ present and shall have type URI and namespace prefix 'pdfaSchema'
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be
+ present and shall have type URI and namespace prefix 'pdfaSchema'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema"
+
+ Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix
+ 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t04.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t04.xml
new file mode 100644
index 00000000..4ff704a6
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t04.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema definition - prefix field
+ Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present
+ and shall have type Text and namespace prefix 'pdfaSchema'
+
+
+
+
+
+ Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present
+ and shall have type Text and namespace prefix 'pdfaSchema'
+ isPrefixValidText == true && prefixPrefix == "pdfaSchema"
+
+ Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix
+ 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml
new file mode 100644
index 00000000..3ea06503
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema definition - property field
+ Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have
+ type Seq Property and namespace prefix 'pdfaSchema'
+
+
+
+
+
+ Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type
+ Seq Property and namespace prefix 'pdfaSchema'
+ isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema")
+
+ Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema'
+ (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2)
+
+ propertyPrefix
+ isPropertyValidSeq
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t06.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t06.xml
new file mode 100644
index 00000000..6215df74
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t06.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema definition - valueType field
+ Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type
+ Seq ValueType and namespace prefix 'pdfaSchema'
+
+
+
+
+
+ Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type
+ Seq ValueType and namespace prefix 'pdfaSchema'
+ isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema")
+
+ Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema'
+ (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2)
+
+ valueTypePrefix
+ isValueTypeValidSeq
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t07.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t07.xml
new file mode 100644
index 00000000..2fefe92c
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t07.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema property - name field
+ Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present
+ and shall have type Text and namespace prefix 'pdfaProperty'
+
+
+
+
+
+ Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present
+ and shall have type Text and namespace prefix 'pdfaProperty'
+ isNameValidText == true && namePrefix == "pdfaProperty"
+
+ Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix
+ 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t08.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t08.xml
new file mode 100644
index 00000000..050ddc09
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t08.xml
@@ -0,0 +1,31 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema property - valueType field
+ Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be
+ present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall
+ be defined
+
+
+
+
+
+ Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be
+ present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall
+ be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty"
+
+ Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix
+ 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or
+ value of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t09.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t09.xml
new file mode 100644
index 00000000..68e13571
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t09.xml
@@ -0,0 +1,30 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema property - category field
+ Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be
+ present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'
+
+
+
+
+
+ Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be
+ present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'
+ isCategoryValidText == true && (category == "external" || category == "internal") &&
+ categoryPrefix == "pdfaProperty"
+
+ Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix
+ 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or
+ has value different from external or internal (category value = %3)
+
+ categoryPrefix
+ isCategoryValidText
+ category
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t10.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t10.xml
new file mode 100644
index 00000000..76859beb
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t10.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema property - description field
+ Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be
+ present and shall have type Text and namespace prefix 'pdfaProperty'
+
+
+
+
+
+ Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be
+ present and shall have type Text and namespace prefix 'pdfaProperty'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaProperty"
+
+ Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix
+ 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t11.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t11.xml
new file mode 100644
index 00000000..01a3bc7c
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t11.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema ValueType type - type field
+ Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present
+ and shall have type Text and namespace prefix 'pdfaType'
+
+
+
+
+
+ Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present
+ and shall have type Text and namespace prefix 'pdfaType'
+ isTypeValidText == true && typePrefix == "pdfaType"
+
+ Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix
+ 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2)
+
+ typePrefix
+ isTypeValidText
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t12.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t12.xml
new file mode 100644
index 00000000..1680a5e4
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t12.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema ValueType type - namespaceURI field
+ Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be
+ present and shall have type URI and namespace prefix 'pdfaType'
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be
+ present and shall have type URI and namespace prefix 'pdfaType'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType"
+
+ Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix
+ 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t13.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t13.xml
new file mode 100644
index 00000000..f1628105
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t13.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema ValueType type - prefix field
+ Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and
+ shall have type Text and namespace prefix 'pdfaType'
+
+
+
+
+
+ Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and
+ shall have type Text and namespace prefix 'pdfaType'
+ isPrefixValidText == true && prefixPrefix == "pdfaType"
+
+ Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix
+ 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t14.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t14.xml
new file mode 100644
index 00000000..55100094
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t14.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema ValueType type - description field
+ Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be
+ present and shall have type Text and namespace prefix 'pdfaType'
+
+
+
+
+
+ Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be
+ present and shall have type Text and namespace prefix 'pdfaType'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaType"
+
+ Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix
+ 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t15.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t15.xml
new file mode 100644
index 00000000..791d03b1
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t15.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema ValueType type - field field
+ Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type
+ Seq Field and namespace prefix 'pdfaType'
+
+
+
+
+
+ Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type
+ Seq Field and namespace prefix 'pdfaType'
+ isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType")
+
+ Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType'
+ (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2)
+
+ fieldPrefix
+ isFieldValidSeq
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t16.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t16.xml
new file mode 100644
index 00000000..5730c8f5
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t16.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema Field type - name field
+ Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text
+ and namespace prefix 'pdfaField'
+
+
+
+
+
+ Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text
+ and namespace prefix 'pdfaField'
+ isNameValidText == true && namePrefix == "pdfaField"
+
+ Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField'
+ (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t17.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t17.xml
new file mode 100644
index 00000000..60e8edb2
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t17.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema Field type - valueType field
+ Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type
+ Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined
+
+
+
+
+
+ Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type
+ Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField"
+
+ Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix
+ 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value
+ of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t18.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t18.xml
new file mode 100644
index 00000000..50e9aee2
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t18.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema Field type - description field
+ Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type
+ Text and namespace prefix 'pdfaField'
+
+
+
+
+
+ Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type
+ Text and namespace prefix 'pdfaField'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaField"
+
+ Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix
+ 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t01.xml
new file mode 100644
index 00000000..18b6bc37
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - PDF/A Identification Schema.
+ The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema
+
+
+
+
+
+ The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema
+ Identification_size == 1
+
+ The document metadata stream doesn't contains PDF/A Identification Schema
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml
new file mode 100644
index 00000000..96ac25c4
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Part number.
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+
+
+
+
+
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+ part == 2
+
+ The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file
+
+ part
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml
new file mode 100644
index 00000000..29d71fe8
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level.
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of
+ "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
+
+
+
+
+
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of
+ "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
+ conformance == "B" || conformance == "U" || conformance == "A"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2B conforming file
+
+ conformance
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t04.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t04.xml
new file mode 100644
index 00000000..f100ed6c
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t04.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - PDF/A Identification Schema property part.
+ Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+
+
+
+
+
+ Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ partPrefix == null || partPrefix == "pdfaid"
+
+ Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t05.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t05.xml
new file mode 100644
index 00000000..d8d59509
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t05.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - PDF/A Identification Schema property conformance.
+ Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+
+
+
+
+
+ Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ conformancePrefix == null || conformancePrefix == "pdfaid"
+
+ Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ conformancePrefix
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t06.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t06.xml
new file mode 100644
index 00000000..b6e1d047
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t06.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - PDF/A Identification Schema property amd.
+ Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+
+
+
+
+
+ Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ amdPrefix == null || amdPrefix == "pdfaid"
+
+ Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ amdPrefix
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t07.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t07.xml
new file mode 100644
index 00000000..db8092d8
--- /dev/null
+++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t07.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - PDF/A Identification Schema property corr.
+ Property "corr" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+
+
+
+
+
+ Property "corr" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ corrPrefix == null || corrPrefix == "pdfaid"
+
+ Property "corr" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ corrPrefix
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml
new file mode 100644
index 00000000..5c9caa62
--- /dev/null
+++ b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.8 Embedded files - F and UF keys
+ The file specification dictionary for an embedded file shall contain the F and UF keys
+
+
+
+
+
+ The file specification dictionary for an embedded file shall contain the F and UF keys
+ containsEF == false || (F != null && UF != null)
+
+ The file specification dictionary for an embedded file does not contain either F or UF key
+ (F = %1, UF = %2)
+
+ F
+ UF
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t05.xml b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t05.xml
new file mode 100644
index 00000000..4f444a6c
--- /dev/null
+++ b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t05.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.8 Embedded files - EF key
+ A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file
+ is compliant with either ISO 19005-1 or this part of ISO 19005
+
+
+
+
+
+ A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is
+ compliant with either ISO 19005-1 or this part of ISO 19005
+ isValidPDFA12 == true
+
+ An embedded file does not comply to either ISO 19005-1 or ISO 19005-2
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t01.xml b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t01.xml
new file mode 100644
index 00000000..739ac117
--- /dev/null
+++ b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-2:2011 - 6.9 Optional content - Name key present
+ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the
+ value of the Configs key in the OCProperties dictionary, shall contain the Name key
+
+
+
+
+
+ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the
+ value of the Configs key in the OCProperties dictionary, shall contain the Name key
+ Name != null && Name.length() > 0
+
+ Missing or empty Name entry of the optional content configuration dictionary
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t02.xml b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t02.xml
new file mode 100644
index 00000000..50110707
--- /dev/null
+++ b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t02.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.9 Optional content - Name key unique
+ Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration
+ dictionaries within the PDF/A-2 file
+
+
+
+
+
+ Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration
+ dictionaries within the PDF/A-2 file
+ hasDuplicateName == false
+
+ Optional content configuration dictionary has duplicated name %1
+
+ Name
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml
new file mode 100644
index 00000000..48d00379
--- /dev/null
+++ b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.9 Optional content - Order key
+ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references
+ to all OCGs in the conforming file
+
+
+
+
+
+ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references
+ to all OCGs in the conforming file
+ OCGsNotContainedInOrder == null
+
+ Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary
+
+ OCGsNotContainedInOrder
+
+
+
+
+
+
+
diff --git a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t04.xml b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t04.xml
new file mode 100644
index 00000000..c041f715
--- /dev/null
+++ b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t04.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.9 Optional content - AS key
+ The AS key shall not appear in any optional content configuration dictionary
+
+
+
+
+
+ The AS key shall not appear in any optional content configuration dictionary
+ AS == null
+
+ AS key is present in the optional content configuration dictionary
+
+
+
+
+
+
+
diff --git a/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t01.xml b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t01.xml
new file mode 100644
index 00000000..a563ed95
--- /dev/null
+++ b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.7 Unicode character maps - Unicode mapping
+ The Font dictionary of all fonts shall define the map of all used character codes to Unicode values, either via a ToUnicode entry,
+ or other mechanisms as defined in ISO 19005-2:2011, 6.2.11.7.2
+
+
+
+
+
+ The Font dictionary of all fonts shall define the map of all used character codes to Unicode values, either via a ToUnicode entry,
+ or other mechanisms as defined in ISO 19005-2, 6.2.11.7.2
+ toUnicode != null
+
+ The glyph can not be mapped to Unicode
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml
new file mode 100644
index 00000000..ff105594
--- /dev/null
+++ b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.7 Unicode character maps - Valid Unicode values
+ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE
+
+
+
+
+
+ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE
+ toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1)
+
+ The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard
+
+
+
+
+
+
+
diff --git a/PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml
new file mode 100644
index 00000000..78eef3a6
--- /dev/null
+++ b/PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level.
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of
+ "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
+
+
+
+
+
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of
+ "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
+ conformance == "U" || conformance == "A"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-2U conforming file
+
+ conformance
+
+
+
+
+
+
+
diff --git a/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml
new file mode 100644
index 00000000..e422b420
--- /dev/null
+++ b/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Conformance level.
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of
+ "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
+
+
+
+
+
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of
+ "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
+ conformance == "A"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-3A conforming file
+
+ conformance
+
+
+
+
+
+
+
diff --git a/PDF_A/3b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml b/PDF_A/3b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml
new file mode 100644
index 00000000..81db226c
--- /dev/null
+++ b/PDF_A/3b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml
@@ -0,0 +1,37 @@
+
+
+
+ ISO 19005-3:2012 - 6.2.11 Fonts - 6.2.11.6 Character encodings - Non-symbolic TrueType fonts
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the
+ value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the
+ dictionary that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic
+ TrueType fonts shall not define a Differences array unless all of the glyph names in the Differences
+ array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft
+ Unicode (3,1 – Platform ID = 3, Encoding ID = 1) encoding in the 'cmap' table
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the
+ value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the
+ dictionary that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic
+ TrueType fonts shall not define a Differences array unless all of the glyph names in the Differences
+ array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft
+ Unicode (3,1 – Platform ID = 3, Encoding ID = 1) encoding in the 'cmap' table
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") &&
+ (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List
+ (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+
diff --git a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml
new file mode 100644
index 00000000..6717e645
--- /dev/null
+++ b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Part number.
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+
+
+
+
+
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+ part == 3
+
+ The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file
+
+ part
+
+
+
+
+
+
+
diff --git a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml
new file mode 100644
index 00000000..166db69d
--- /dev/null
+++ b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Conformance level.
+ A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of
+ pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U
+
+
+
+
+
+ A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of
+ pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U
+ conformance == "B" || conformance == "U" || conformance == "A"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-3B conforming file
+
+ conformance
+
+
+
+
+
+
+
diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml
new file mode 100644
index 00000000..d3317941
--- /dev/null
+++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-3:2012 - 6.8 Embedded files - Subtype
+ The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary.
+ If the MIME type is not known, the "application/octet-stream" shall be used
+
+
+
+
+
+ The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary.
+ If the MIME type is not known, the "application/octet-stream" shall be used
+ Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype)
+
+ MIME type %1 of an embedded file is missing or invalid
+
+ Subtype
+
+
+
+
+
+
+
diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml
new file mode 100644
index 00000000..12fdb534
--- /dev/null
+++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 19005-3:2012 - 6.8 Embedded files - AFRelationship
+ The file specification dictionary shall contain key AFRelationship of type Name identifying the
+ relationship between the embedded file and the content of the document
+
+
+
+
+
+ The file specification dictionary shall contain key AFRelationship of type Name identifying the
+ relationship between the embedded file and the content of the document
+ AFRelationship != null
+
+ The file specification dictionary for an embedded file does not contain the AFRelationship key
+ or it has invalid value type
+
+
+
+
+
+
+
diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml
new file mode 100644
index 00000000..2ea6d988
--- /dev/null
+++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-3:2012 - 6.8 Embedded files - AF arrays
+ The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship
+ between the embedded file and the PDF document or the part of the PDF document with which it is associated
+
+
+
+
+
+ The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship
+ between the embedded file and the PDF document or the part of the PDF document with which it is associated
+ isAssociatedFile == true
+
+ The file specification dictionary for an embedded file is not associated with the PDF document or any of its parts
+
+
+
+
+
+
+
diff --git a/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml
new file mode 100644
index 00000000..ac1b5478
--- /dev/null
+++ b/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Conformance level.
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of
+ "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
+
+
+
+
+
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of
+ "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
+ conformance == "U" || conformance == "A"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-3U conforming file
+
+ conformance
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml b/PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml
new file mode 100644
index 00000000..c8edf294
--- /dev/null
+++ b/PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.11 Permissions - UR3 and DocMDP
+ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263)
+
+
+
+
+
+ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263)
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == ''
+
+ The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP
+
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString()
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml b/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml
new file mode 100644
index 00000000..0984561a
--- /dev/null
+++ b/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.12 Document catalog dictionary - Version
+ If the Version key is present in the document catalog dictionary, the first character in its value
+ shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third
+ character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3
+
+
+
+
+
+ If the Version key is present in the document catalog dictionary, the first character in its value
+ shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third
+ character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3
+ Version == null || /^2\.[0-9]$/.test(Version)
+
+ The Version key with value %1 does not match the pattern 2.n,
+ where 'n' is a single digit number between 0 and 9
+
+ Version
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml b/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml
new file mode 100644
index 00000000..47df538d
--- /dev/null
+++ b/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.2 File header - PDF header
+ The file header shall begin at byte zero and shall consist of “%PDF-2.n” followed by a single EOL marker,
+ where 'n' is a single digit number between 0 (30h) and 9 (39h)
+
+
+
+
+
+ The file header shall begin at byte zero and shall consist of "%PDF-2.n" followed by a single EOL marker,
+ where 'n' is a single digit number between 0 (30h) and 9 (39h)
+ headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header)
+
+ File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-2.n,
+ where 'n' is a single digit number between 0 and 9
+
+ header
+ headerOffset
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml b/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml
new file mode 100644
index 00000000..6978f00a
--- /dev/null
+++ b/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.2 File header - Binary comment
+ The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values
+ shall have a decimal value greater than 127
+
+
+
+
+
+ The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded
+ byte values shall have a decimal value greater than 127
+ headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
+
+ Binary comment in the file header is missing or does not start with 4 bytes with byte values
+ above 127 (first four bytes = %1, %2, %3, %4)
+
+ headerByte1
+ headerByte2
+ headerByte3
+ headerByte4
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml
new file mode 100644
index 00000000..5ce725f6
--- /dev/null
+++ b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.3 File trailer - ID keyword
+ File identifiers shall be defined by the ID entry in a PDF file’s trailer dictionary
+
+
+
+
+
+ File identifiers shall be defined by the ID entry in a PDF file’s trailer dictionary
+ lastID != null && lastID.length() > 0
+
+ Missing or empty ID in the document trailer
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml
new file mode 100644
index 00000000..efab0fbf
--- /dev/null
+++ b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.3 File trailer - Encrypt
+ The Encrypt key shall not be present in the trailer dictionary
+
+
+
+
+
+ The Encrypt key shall not be present in the trailer dictionary
+ isEncrypted != true
+
+ The Encrypt key is present in the trailer dictionary
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml
new file mode 100644
index 00000000..33cf5219
--- /dev/null
+++ b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.3 File trailer - EOF
+ No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5
+
+
+
+
+
+ No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5
+ postEOFDataSize == 0
+
+ %1 byte(s) of data is present after the last end-of-file marker
+
+ postEOFDataSize
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml
new file mode 100644
index 00000000..3c387f43
--- /dev/null
+++ b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.3 File trailer - Info key
+ The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary
+
+
+
+
+
+ The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary
+ containsPieceInfo == true || containsInfo == false
+
+ The Info key present in the trailer dictionary, but PieceInfo entry does not present in the document catalog dictionary
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t05.xml b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t05.xml
new file mode 100644
index 00000000..436316c8
--- /dev/null
+++ b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t05.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.3 File trailer - ModDate
+ If a document information dictionary is present, it shall only contain a ModDate entry
+
+
+
+
+
+ If a document information dictionary is present, it shall only contain a ModDate entry
+ size == 1 && ModDate != null
+
+ Document information dictionary is present and contains %1 key(s), but allowed only ModDate
+
+ keysString.split('&').filter(elem => elem != 'ModDate').toString()
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml b/PDF_A/4/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml
new file mode 100644
index 00000000..284e7f65
--- /dev/null
+++ b/PDF_A/4/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.4 Cross reference table - Spacings after xref
+ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker
+
+
+
+
+
+ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker
+ xrefEOLMarkersComplyPDFA
+
+ Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t01.xml b/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t01.xml
new file mode 100644
index 00000000..75691ad6
--- /dev/null
+++ b/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.5 String objects - Even number of characters
+ The number of hexadecimal digits in a hexadecimal string shall always be even
+
+
+
+
+
+ Hexadecimal strings shall contain an even number of non-white-space characters
+ (isHex != true) || hexCount % 2 == 0
+
+ A hexadecimal string contains odd number (%1) of non-white-space characters
+
+ hexCount
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t02.xml b/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t02.xml
new file mode 100644
index 00000000..ce0aea56
--- /dev/null
+++ b/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.5 String objects - Characters range
+ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)
+
+
+
+
+
+ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)
+ (isHex != true) || containsOnlyHex == true
+
+ Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t01.xml b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t01.xml
new file mode 100644
index 00000000..75630db0
--- /dev/null
+++ b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t01.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.6 Stream objects - 6.1.6.1 General - Correct Length
+ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character
+ after the stream keyword and preceding the EOL marker before the endstream keyword
+
+
+
+
+
+ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character
+ after the stream keyword and preceding the EOL marker before the endstream keyword
+ Length == realLength
+
+ Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s))
+
+ realLength
+ Length
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t02.xml b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t02.xml
new file mode 100644
index 00000000..213ab74f
--- /dev/null
+++ b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.6 Stream objects - 6.1.6.1 General - File specification
+ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys
+
+
+
+
+
+ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys
+ F == null && FFilter == null && FDecodeParms == null
+
+ A stream object dictionary contains %1 key(s)
+
+ keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString()
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.2 Filters/verapdf-profile-6-1-6-2-t01.xml b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.2 Filters/verapdf-profile-6-1-6-2-t01.xml
new file mode 100644
index 00000000..839b98a0
--- /dev/null
+++ b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.2 Filters/verapdf-profile-6-1-6-2-t01.xml
@@ -0,0 +1,36 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.6 Stream objects - 6.1.6.2 Filters
+ All standard stream filters listed in ISO 32000-2:2020, 7.4, Table 6 may be used, with the
+ exception of LZWDecode. Filters that are not listed in ISO 32000-2:2020, 7.4, Table 6 shall not be used. In
+ addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters
+ dictionary is Identity
+
+
+
+
+
+ All standard stream filters listed in ISO 32000-2:2020, 7.4, Table 6 may be used, with the
+ exception of LZWDecode. Filters that are not listed in ISO 32000-2:2020, 7.4, Table 6 shall not be used.
+ In addition, the Crypt filter shall not be used unless the value of the Name key in the decode
+ parameters dictionary is Identity
+
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" ||
+ internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" ||
+ internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" ||
+ internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" ||
+ (internalRepresentation == "Crypt" && decodeParms == "Identity")
+
+ Unknown or not permitted Stream filter %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml b/PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml
new file mode 100644
index 00000000..60ffc925
--- /dev/null
+++ b/PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.7 Name objects
+ Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with
+ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences
+
+
+
+
+
+ Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with
+ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences
+ isValidUtf8 == true
+
+ The name value %1 does not represent a correct UTF-8 character sequence
+
+ unicodeValue
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml b/PDF_A/4/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml
new file mode 100644
index 00000000..f55b41ed
--- /dev/null
+++ b/PDF_A/4/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.8 Indirect objects - Spacings
+ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be
+ separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj
+ keywords shall each be followed by an EOL marker
+
+
+
+
+
+ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be
+ separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj
+ keywords shall each be followed by an EOL marker
+ spacingCompliesPDFA
+
+ Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj'
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.1 File structure/6.1.9 Inline image dictionaries/verapdf-profile-6-1-9-t01.xml b/PDF_A/4/6.1 File structure/6.1.9 Inline image dictionaries/verapdf-profile-6-1-9-t01.xml
new file mode 100644
index 00000000..dacd8bb5
--- /dev/null
+++ b/PDF_A/4/6.1 File structure/6.1.9 Inline image dictionaries/verapdf-profile-6-1-9-t01.xml
@@ -0,0 +1,33 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.9 Inline image dictionaries
+ The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-2:2020, 8.9.7, Table 92,
+ or an array containing any such value
+
+
+
+
+
+ The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-2:2020, 8.9.7, Table 92,
+ or an array containing any such value
+
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" ||
+ internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" ||
+ internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" ||
+ internalRepresentation == "AHx" || internalRepresentation == "A85" ||
+ internalRepresentation == "Fl" || internalRepresentation == "RL" ||
+ internalRepresentation == "CCF" || internalRepresentation == "DCT"
+
+ Inline image uses not permitted or unknown filter %1
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t01.xml b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t01.xml
new file mode 100644
index 00000000..90aa1b2f
--- /dev/null
+++ b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.10 Optional content - Name key present
+ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the
+ value of the Configs key in the OCProperties dictionary, shall contain the Name key
+
+
+
+
+
+ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the
+ value of the Configs key in the OCProperties dictionary, shall contain the Name key
+ Name != null
+
+ Missing Name entry of the optional content configuration dictionary
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t02.xml b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t02.xml
new file mode 100644
index 00000000..416870ae
--- /dev/null
+++ b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t02.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.10 Optional content - Name key unique
+ Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration
+ dictionaries within the PDF/A-4 file
+
+
+
+
+
+ Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration
+ dictionaries within the PDF/A-4 file
+ hasDuplicateName == false
+
+ Optional content configuration dictionary has duplicated name %1
+
+ Name
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml
new file mode 100644
index 00000000..626143b5
--- /dev/null
+++ b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.10 Optional content - Order key
+ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references
+ to all OCGs in the conforming file
+
+
+
+
+
+ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references
+ to all OCGs in the conforming file
+ OCGsNotContainedInOrder == null
+
+ Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary
+
+ OCGsNotContainedInOrder
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.11 Use of alternate presentations and transitions/verapdf-profile-6-11-t01.xml b/PDF_A/4/6.11 Use of alternate presentations and transitions/verapdf-profile-6-11-t01.xml
new file mode 100644
index 00000000..a5e4c2ed
--- /dev/null
+++ b/PDF_A/4/6.11 Use of alternate presentations and transitions/verapdf-profile-6-11-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.11 Use of alternate presentations and transitions - AlternatePresentations
+ There shall be no AlternatePresentations entry in the document's name dictionary
+
+
+
+
+
+ There shall be no AlternatePresentations entry in the document's name dictionary
+ containsAlternatePresentations == false
+
+ The document's name dictionary contains the AlternatePresentations entry
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.11 Use of alternate presentations and transitions/verapdf-profile-6-11-t02.xml b/PDF_A/4/6.11 Use of alternate presentations and transitions/verapdf-profile-6-11-t02.xml
new file mode 100644
index 00000000..66c6a7cc
--- /dev/null
+++ b/PDF_A/4/6.11 Use of alternate presentations and transitions/verapdf-profile-6-11-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.11 Use of alternate presentations and transitions - PresSteps
+ There shall be no PresSteps entry in any Page dictionary
+
+
+
+
+
+ There shall be no PresSteps entry in any Page dictionary
+ containsPresSteps == false
+
+ A Page dictionary contains the PresSteps entry
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.12 Document requirements/verapdf-profile-6-12-t01.xml b/PDF_A/4/6.12 Document requirements/verapdf-profile-6-12-t01.xml
new file mode 100644
index 00000000..96fc5e7b
--- /dev/null
+++ b/PDF_A/4/6.12 Document requirements/verapdf-profile-6-12-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.12 Document requirements
+ The document catalog shall not contain the Requirements key
+
+
+
+
+
+ The document catalog shall not contain the Requirements key
+ Requirements == null
+
+ The document catalog contains the Requirements key
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t01.xml
new file mode 100644
index 00000000..63314c14
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t01.xml
@@ -0,0 +1,32 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.2 Font types - Type entry
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to
+ the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary
+ Type == "Font"
+
+ A Font dictionary has value %1 of Type entry instead of Font
+
+ Type
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t02.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t02.xml
new file mode 100644
index 00000000..acb7dd62
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t02.xml
@@ -0,0 +1,37 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.2 Font types - Subtype entry
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts
+ "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts
+ "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts
+ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0"
+ || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
+
+ Invalid Subtype entry in font dictionary with value %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t03.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t03.xml
new file mode 100644
index 00000000..d157ff60
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t03.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.2 Font types - BaseFont entry
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ BaseFont - name - (Required) The PostScript name of the font
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ BaseFont - name - (Required) The PostScript name of the font
+ Subtype == "Type3" || fontName != null
+
+ A BaseFont entry is missing or has invalid type
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t04.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t04.xml
new file mode 100644
index 00000000..49c2a67a
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t04.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.2 Font types - FirstChar entry
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array
+ isStandard == true || FirstChar != null
+
+ A non-standard simple font dictionary has missing or invalid FirstChar entry
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t05.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t05.xml
new file mode 100644
index 00000000..93274051
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t05.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.2 Font types - LastChat entry
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array
+ isStandard == true || LastChar != null
+
+ A non-standard simple font dictionary has missing or invalid LastChar entry
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t06.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t06.xml
new file mode 100644
index 00000000..a8cf63fb
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t06.xml
@@ -0,0 +1,31 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.2 Font types - Widths entry
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions
+ in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions.
+ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths
+ isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
+
+ Widths array is missing or has invalid size %1 instead of %2
+
+ Widths_size
+ LastChar - FirstChar + 1
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t07.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t07.xml
new file mode 100644
index 00000000..b40db706
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t07.xml
@@ -0,0 +1,33 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.2 Font types - embedded fond Subtype
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5.
+ The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 2.0 are
+ Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented
+ in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5.
+ The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 2.0 are
+ Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented
+ in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22
+ fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType"
+
+ Unsupported font file format %1 of the embedded font
+
+ fontFileSubtype
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml
new file mode 100644
index 00000000..06d85f52
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml
@@ -0,0 +1,44 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.3 Composite fonts - CIDSystemInfo
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its
+ CIDFont dictionary and its Encoding dictionary shall have the following relationship:
+ - If the Encoding key in the Type 0 font dictionary has a value of Identity-H or Identity-V, then any values
+ for the Registry, Ordering, and Supplement keys may be used in the CIDSystemInfo dictionary of the CIDFont.
+ - Otherwise the corresponding values of the Registry and Ordering keys in both CIDSystemInfo dictionaries
+ shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall
+ be greater than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap
+
+
+
+
+
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its
+ CIDFont dictionary and its Encoding dictionary shall have the following relationship:
+ - If the Encoding key in the Type 0 font dictionary has a value of Identity-H or Identity-V, then any values
+ for the Registry, Ordering, and Supplement keys may be used in the CIDSystemInfo dictionary of the CIDFont.
+ - Otherwise the corresponding values of the Registry and Ordering keys in both CIDSystemInfo dictionaries
+ shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall
+ be less than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null &&
+ CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry &&
+ CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement)
+
+ CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible
+ (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3,
+ CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+ CIDFontSupplement
+ CMapSupplement
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.2 CIDFonts/verapdf-profile-6-2-10-3-2-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.2 CIDFonts/verapdf-profile-6-2-10-3-2-t01.xml
new file mode 100644
index 00000000..b635efd0
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.2 CIDFonts/verapdf-profile-6-2-10-3-2-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.3 Composite fonts - CIDToGIDMap
+ ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, the CIDFont
+ dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or
+ the name Identity, as described in ISO 32000-2:2020, 9.7.4 Table 115
+
+
+
+
+
+ ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, the CIDFont
+ dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices
+ or the name Identity, as described in ISO 32000-2:2020, 9.7.4 Table 115
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t01.xml
new file mode 100644
index 00000000..c499f135
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t01.xml
@@ -0,0 +1,42 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.3 Composite fonts - CMaps
+ All CMaps used within a conforming PDF/A-4 file, except those listed in ISO 32000-2:2020, 9.7.5.2
+ Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5
+
+
+
+
+
+ All CMaps used within a conforming PDF/A-4 file, except those listed in ISO 32000-2:2020,
+ 9.7.5.2 Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" ||
+ CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" ||
+ CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" ||
+ CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" ||
+ CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" ||
+ CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" ||
+ CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" ||
+ CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" ||
+ CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" ||
+ CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" ||
+ CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" ||
+ CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" ||
+ CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" ||
+ CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" ||
+ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" ||
+ embeddedFile_size == 1
+
+ A non-standard CMap %1 is not embedded
+
+ CMapName
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t02.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t02.xml
new file mode 100644
index 00000000..e05a8fc9
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t02.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.3 Composite fonts - WMode
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary
+ shall be identical to the WMode value in the embedded CMap stream
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary
+ shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t03.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t03.xml
new file mode 100644
index 00000000..965ed00c
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t03.xml
@@ -0,0 +1,40 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.3 Composite fonts - CMaps
+ A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116
+
+
+
+
+
+ A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" ||
+ CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" ||
+ CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" ||
+ CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" ||
+ CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" ||
+ CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" ||
+ CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" ||
+ CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" ||
+ CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" ||
+ CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" ||
+ CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" ||
+ CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" ||
+ CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" ||
+ CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" ||
+ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" ||
+ CMapName == "UniKS-UTF16-V"
+
+ A CMap references another non-standard CMap %1
+
+ CMapName
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t01.xml
new file mode 100644
index 00000000..325521fe
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.4 Embedding - General
+ The font programs for all fonts used for rendering within a conforming file shall be embedded
+ within that file, as defined in ISO 32000-2:2020, 9.9
+
+
+
+
+
+ The font programs for all fonts used for rendering within a conforming file shall be embedded
+ within that file, as defined in ISO 32000-2:2020, 9.9
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t02.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t02.xml
new file mode 100644
index 00000000..ba075374
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t02.xml
@@ -0,0 +1,31 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.4 Embedding - Glyphs
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file.
+ A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt
+ from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes
+ shall be able to be mapped to glyphs according to ISO 32000-2:2020, 9.6.5 without the use of
+ a non-standard mapping chosen by the conforming processor
+
+
+
+
+
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file.
+ A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt
+ from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes
+ shall be able to be mapped to glyphs according to ISO 32000-2:2020, 9.6.5 without the use of
+ a non-standard mapping chosen by the conforming processor
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.5 Font metrics/verapdf-profile-6-2-10-5-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.5 Font metrics/verapdf-profile-6-2-10-5-t01.xml
new file mode 100644
index 00000000..10483834
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.5 Font metrics/verapdf-profile-6-2-10-5-t01.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.5 Font metrics
+ For every font embedded in a conforming file, the glyph width information in the font dictionary
+ and in the embedded font program shall be consistent for every glyph referenced for rendering. Glyphs that
+ are referenced only with rendering mode 3 are exempt from this requirement
+
+
+
+
+
+ For every font embedded in a conforming file, the glyph width information in the font
+ dictionary and in the embedded font program shall be consistent for every glyph referenced for
+ rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null ||
+ Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml
new file mode 100644
index 00000000..0993a8dc
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.6 Character encodings - cmaps for non-symbolic TrueType fonts
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall
+ contain at least Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1), or Macintosh Roman (1,0 – Platform ID=1, Encoding ID=0)
+ 'cmap' subtable that all necessary glyph lookups are able to be carried out
+
+
+
+
+
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall
+ contain at least Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1), or Macintosh Roman (1,0 – Platform ID=1, Encoding ID=0)
+ 'cmap' subtable that all necessary glyph lookups are able to be carried out
+ isSymbolic == true || cmap31Present == true || cmap10Present == true
+
+ The embedded font program for a non-symbolic TrueType font does not contain Microsoft
+ Symbol (3,1 – Platform ID=3, Encoding ID=1) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml
new file mode 100644
index 00000000..b8b843e5
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml
@@ -0,0 +1,37 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.6 Character encodings - Non-symbolic TrueType fonts
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the
+ value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the
+ dictionary which is the value of the Encoding key in the Font dictionary. In addition, no non-symbolic
+ TrueType font shall define a Differences array unless all of the glyph names in the Differences array
+ are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft
+ Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' subtable
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the
+ value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the
+ dictionary which is the value of the Encoding key in the Font dictionary. In addition, no non-symbolic
+ TrueType font shall define a Differences array unless all of the glyph names in the Differences array
+ are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft
+ Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' subtable
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") &&
+ (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List
+ (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t03.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t03.xml
new file mode 100644
index 00000000..60855fc2
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t03.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.6 Character encodings - Symbolic TrueType fonts
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+
+
+
+
+
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t04.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t04.xml
new file mode 100644
index 00000000..6232ef31
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t04.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.6 Character encodings - cmaps in the symbolic TrueType font program
+ The 'cmap' subtable in the embedded font program for a symbolic TrueType font shall contain
+ either the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1,
+ Encoding ID=0) encoding
+
+
+
+
+
+ The 'cmap' subtable in the embedded font program for a symbolic TrueType font shall contain
+ either the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1,
+ Encoding ID=0) encoding
+ isSymbolic == false || cmap30Present == true || cmap10Present == true
+
+ The embedded font program for a symbolic TrueType font does not contain Microsoft
+ Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml
new file mode 100644
index 00000000..b9c3cfc4
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.7 Unicode character maps - Valid Unicode values
+ If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than
+ zero (0), but not equal to either U+FEFF or U+FFFE
+
+
+
+
+
+ If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than
+ zero (0), but not equal to either U+FEFF or U+FFFE
+ toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1)
+
+ The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml
new file mode 100644
index 00000000..6d330fa4
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.8 Use of ActualText
+ The ActualText entry shall not contain any PUA values
+
+
+
+
+
+ The ActualText entry shall not contain any PUA values
+ containsPUA == false
+
+ The ActualText entry contains Unicode PUA (Private Use Area) code points
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.9 Use of .notdef glyph/verapdf-profile-6-2-10-9-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.9 Use of .notdef glyph/verapdf-profile-6-2-10-9-t01.xml
new file mode 100644
index 00000000..45f3dad8
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.9 Use of .notdef glyph/verapdf-profile-6-2-10-9-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.9 Use of .notdef glyph
+ A PDF/A-4 compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators,
+ regardless of text rendering mode, in any content stream
+
+
+
+
+
+ A PDF/A-4 compliant document shall not contain a reference to the .notdef glyph from any of the text showing
+ operators, regardless of text rendering mode, in any content stream
+ name != ".notdef"
+
+ The document contains a reference to the .notdef glyph
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml
new file mode 100644
index 00000000..e6d8fb91
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.2 Content streams
+ Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed by the BX/EX compatibility operators
+
+
+
+
+
+ Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed
+ by the BX/EX compatibility operators
+ false
+
+ A content stream contains operator %1 not defined in ISO 32000-2:2020
+
+ name
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml
new file mode 100644
index 00000000..8e2a773e
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml
@@ -0,0 +1,31 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.2 Content streams - Resources dictionary
+ A content stream that references other objects, such as images and fonts that are necessary to
+ fully render or process the stream, shall have an explicitly associated Resources dictionary as described
+ in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources referenced by this
+ content stream
+
+
+
+
+
+ A content stream that references other objects, such as images and fonts that are necessary to
+ fully render or process the stream, shall have an explicitly associated Resources dictionary as
+ described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources
+ referenced by this content stream
+ inheritedResourceNames == ''
+
+ A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary
+
+ inheritedResourceNames
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t03.xml b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t03.xml
new file mode 100644
index 00000000..82e5ced8
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t03.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.2 Content streams - Resources dictionary
+ A content stream's named resources shall be defined by a resource dictionary, which shall
+ enumerate the named resources needed by the operators in the content stream and the names by which
+ they can be referred to
+
+
+
+
+
+ A content stream's named resources shall be defined by a resource dictionary, which shall
+ enumerate the named resources needed by the operators in the content stream and the names by which
+ they can be referred to
+ undefinedResourceNames == ''
+
+ A content stream references named resource(s) %1 not defined by a resource dictionary
+
+ undefinedResourceNames
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml
new file mode 100644
index 00000000..ea9e2821
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.3 Output intent - Valid ICC output profile
+ The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile
+ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK"
+
+
+
+
+
+ The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile
+ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK"
+ (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0
+
+ The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3)
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml
new file mode 100644
index 00000000..fdafb147
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.3 Output intent - Matching multiple output profiles
+ If any OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005
+ and at the same time with PDF/X or PDF/E, then all entries that contain a DestOutputProfile key shall have as the value of that key the same
+ indirect object, which shall be a valid ICC profile stream
+
+
+
+
+
+ If any OutputIntents array contains more than one entry, as might be the case where a file is compliant
+ with this part of ISO 19005 and at the same time with PDF/X or PDF/E, then all entries that contain a
+ DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC
+ profile stream
+ sameOutputProfileIndirect == true
+
+ OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1)
+
+ outputProfileIndirects
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml
new file mode 100644
index 00000000..dfd668e4
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.3 Output intent - DestOutputProfileRef entry
+ The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary
+
+
+
+
+
+ The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary
+ containsDestOutputProfileRef == false
+
+ The output intent dictionary contains forbidden entry DestOutputProfileRef
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml
new file mode 100644
index 00000000..347c3bd8
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased colour spaces
+ The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5
+
+
+
+
+
+ The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5
+ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") &&
+ (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0
+
+ The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 2.0 requirements
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml
new file mode 100644
index 00000000..b0570225
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased color spaces
+ Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is
+ used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for
+ fill is set to true, or both
+
+
+
+
+
+ Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is
+ used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for
+ fill is set to true, or both
+ overprintFlag == false || OPM == 0
+
+ Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting
+
+ OPM
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml
new file mode 100644
index 00000000..a0cfaa03
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml
@@ -0,0 +1,35 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased color spaces
+ An ICCBased colour space shall not be used where the profile is a CMYK destination profile and is
+ identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace
+
+
+
+
+
+ An ICCBased colour space shall not be used where the profile is a CMYK destination profile and
+ is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace
+ (ICCProfileIndirect == null || (ICCProfileIndirect != gOutputProfileIndirect &&
+ ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null ||
+ (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5))
+
+ An ICCBased CMYK color space is identical to the current PDF/A OutputIntent color profile or
+ the current transparency blending color space
+
+
+
+
+
+
+
+ null
+ destOutputProfileIndirect
+
+
+ null
+ ICCProfileMD5
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml
new file mode 100644
index 00000000..fe167f12
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml
@@ -0,0 +1,42 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceRGB
+ DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the
+ DeviceRGB colour space is used or if the current transparency blending space, when the DeviceRGB colour
+ space is used, is a device independent RGB-based colour space or the current PDF/A OutputIntent, when the
+ DeviceRGB colour space is used, contains an 'RGB ' destination profile
+
+
+
+
+
+ DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when
+ the DeviceRGB colour space is used or if the current transparency blending space, when the DeviceRGB
+ colour space is used, is a device independent RGB-based colour space or the current PDF/A OutputIntent,
+ when the DeviceRGB colour space is used, contains an 'RGB ' destination profile
+ (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') ||
+ gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB'
+
+ DeviceRGB colour space is used without RGB output intent profile and without current
+ transparency blending space being Device-independent RGB
+
+
+
+
+
+
+
+ null
+ outputColorSpace
+
+
+ null
+ outputColorSpace
+
+
+ null
+ colorSpaceType
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml
new file mode 100644
index 00000000..55076fe3
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml
@@ -0,0 +1,41 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceCMYK
+ DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set when
+ the DeviceCMYK colour space is used or if the current transparency blending space, when the DeviceCMYK
+ colour space is used, is a device independent CMYK-based colour space or the current PDF/A OutputIntent,
+ when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile
+
+
+
+
+
+ DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set
+ when the DeviceCMYK colour space is used or if the current transparency blending space, when the
+ DeviceCMYK colour space is used, is a device independent CMYK-based colour space or the current PDF/A
+ OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile
+ (gPageOutputCS == null ? gDocumentOutputCS == 'CMYK' : gPageOutputCS == 'CMYK') || gTransparencyCS == 'CMYK'
+
+ DeviceCMYK colour space is used without CMYK output intent profile and without current
+ transparency blending space being Device-independent CMYK
+
+
+
+
+
+
+
+ null
+ outputColorSpace
+
+
+ null
+ outputColorSpace
+
+
+ null
+ colorSpaceType
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml
new file mode 100644
index 00000000..893cdaee
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml
@@ -0,0 +1,32 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceGray
+ DeviceGray shall only be used if a device independent DefaultGray colour space has been set when
+ the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect
+
+
+
+
+
+ DeviceGray shall only be used if a device independent DefaultGray colour space has been set when
+ the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect
+ gPageOutputCS != null || gDocumentOutputCS != null
+
+ DeviceGray colour space is used without output intent profile
+
+
+
+
+
+
+
+ null
+ outputColorSpace
+
+
+ null
+ outputColorSpace
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml
new file mode 100644
index 00000000..32c9b4c6
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.4 Separation and DeviceN colour spaces - DeviceN colorants
+ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present
+
+
+
+
+
+ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present
+ areColorantsPresent == true
+
+ A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml
new file mode 100644
index 00000000..e781eaf1
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.4 Separation and DeviceN colour spaces - Consistency of Separations
+ All Separation arrays within a single conforming PDF/A-4 file (including those in Colorants dictionaries) that have the same name shall have the
+ same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the
+ use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored
+
+
+
+
+
+ All Separation arrays within a single conforming PDF/A-4 file (including those in Colorants dictionaries) that have the
+ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF
+ objects shall be compared, rather than the computational result of the use of those PDF objects. Compression
+ and whether or not an object is direct or indirect shall be ignored
+ areTintAndAlternateConsistent == true
+
+ Several occurrences of a Separation colour space with the same name are not consistent
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml
new file mode 100644
index 00000000..9d3b8290
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.5 Extended graphics state - TR key
+ A graphics state parameter dictionary (ISO 32000-2:2020, 8.4.5) shall not contain the TR key
+
+
+
+
+
+ A graphics state parameter dictionary (ISO 32000-2:2020, 8.4.5) shall not contain the TR key
+ TR == null
+
+ A graphics state parameter dictionary contains the TR key
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml
new file mode 100644
index 00000000..071c06bf
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.5 Extended graphics state - TR2 key
+ A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default
+
+
+
+
+
+ A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default
+ TR2 == null || TR2 == "Default"
+
+ A graphics state parameter dictionary contains the TR2 key with value %1 other than Default
+
+ TR2
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml
new file mode 100644
index 00000000..3ab8cc23
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.5 Extended graphics state - HTO key
+ A graphics state parameter dictionary shall not contain the HTO key
+
+
+
+
+
+ A graphics state parameter dictionary shall not contain the HTO key
+ containsHTO == false
+
+ A graphics state parameter dictionary contains the HTO key
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml
new file mode 100644
index 00000000..b867bb4d
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.5 Extended graphics state - Halftone type
+ All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key
+
+
+
+
+
+ All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key
+ HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5)
+
+ A Halftone has type %1 instead of 1 or 5
+
+ HalftoneType
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml
new file mode 100644
index 00000000..eae5fcf2
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.5 Extended graphics state - Halftone name
+ Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key
+
+
+
+
+
+ Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key
+ HalftoneName == null
+
+ A Halftone dictionary contains the HalftoneName key
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml
new file mode 100644
index 00000000..cb2f175d
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.5 Extended graphics state - TransferFunction in halftones
+ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020
+
+
+
+
+
+ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020
+ colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' ||
+ colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ?
+ TransferFunction == null : TransferFunction != null)
+
+ Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t01.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t01.xml
new file mode 100644
index 00000000..b33a2c4c
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.7 Images - 6.2.7.1 General - Alternates
+ An Image dictionary shall not contain the Alternates key
+
+
+
+
+
+ An Image dictionary shall not contain the Alternates key
+ containsAlternates == false
+
+ Alternates key is present in the Image dictionary
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t02.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t02.xml
new file mode 100644
index 00000000..f52ebc43
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.7 Images - 6.2.7.1 General - OPI
+ An Image dictionary shall not contain the OPI key
+
+
+
+
+
+ An Image dictionary shall not contain the OPI key
+ containsOPI == false
+
+ OPI key is present in the Image dictionary
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t03.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t03.xml
new file mode 100644
index 00000000..1e08ffdb
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t03.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.7 Images - 6.2.7.1 General - Interpolate
+ If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image,
+ the I key, if present, shall have a value of false
+
+
+
+
+
+ If an Image dictionary contains the Interpolate key, its value shall be false. For an inline
+ image, the I key, if present, shall have a value of false
+ Interpolate == false
+
+ The value of the Interpolate key in the Image dictionary is true
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t04.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t04.xml
new file mode 100644
index 00000000..0564fd07
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t04.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.7 Images - BitsPerComponent
+ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16
+
+
+
+
+
+ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16
+ BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 ||
+ BitsPerComponent == 8 || BitsPerComponent == 16
+
+ The value of the BitsPerComponent key in the Image dictionary is %1
+
+ BitsPerComponent
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t01.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t01.xml
new file mode 100644
index 00000000..4b367f39
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.7.3 JPEG2000 - Number of channels
+ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4
+
+
+
+
+
+ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4
+ nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4
+
+ JPEG2000 image has %1 colour channels that is neither 1, 3 or 4
+
+ nrColorChannels
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml
new file mode 100644
index 00000000..a7c2e5e0
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.7.3 JPEG2000 - Colour spaces with APPROX field
+ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space
+ specification that has the value 0x01 in the APPROX field
+
+
+
+
+
+ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space
+ specification that has the value 0x01 in the APPROX field
+ hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1
+
+ The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field)
+
+ nrColorSpacesWithApproxField
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml
new file mode 100644
index 00000000..b47396fe
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.7.3 JPEG2000 - Colour specification method
+ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only
+ that colour space and shall ignore all other colour space specifications
+
+
+
+
+
+ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only
+ that colour space and shall ignore all other colour space specifications
+ hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3
+
+ Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03
+
+ colrMethod
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t04.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t04.xml
new file mode 100644
index 00000000..3437e8cd
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t04.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.7.3 JPEG2000 - Enumerated colour space
+ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used
+
+
+
+
+
+ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used
+ hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19
+
+ JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t05.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t05.xml
new file mode 100644
index 00000000..ce3b3ae7
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t05.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.7.3 JPEG2000 - Bit-depth
+ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth
+
+
+
+
+
+ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth
+ bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38)
+
+ JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range
+ ('bpcc' box present = %1, bit depth = %2)
+
+ bpccBoxPresent
+ bitDepth
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.8 XObjects/6.2.8.1 Form XObjects/verapdf-profile-6-2-8-1-t01.xml b/PDF_A/4/6.2 Graphics/6.2.8 XObjects/6.2.8.1 Form XObjects/verapdf-profile-6-2-8-1-t01.xml
new file mode 100644
index 00000000..04f6e5cd
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.8 XObjects/6.2.8.1 Form XObjects/verapdf-profile-6-2-8-1-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.8 Form XObjects - 6.2.8.1 Form XObjects
+ A form XObject dictionary shall not contain an OPI key
+
+
+
+
+
+ A form XObject dictionary shall not contain an OPI key
+ containsOPI == false
+
+ The form XObject dictionary contains an OPI key
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.8 XObjects/6.2.8.2 Reference XObjects/verapdf-profile-6-2-8-2-t01.xml b/PDF_A/4/6.2 Graphics/6.2.8 XObjects/6.2.8.2 Reference XObjects/verapdf-profile-6-2-8-2-t01.xml
new file mode 100644
index 00000000..0e7c66c9
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.8 XObjects/6.2.8.2 Reference XObjects/verapdf-profile-6-2-8-2-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.8 XObjects - 6.2.8.2 Reference XObjects
+ A conforming file shall not contain any reference XObjects
+
+
+
+
+
+ A conforming file shall not contain any reference XObjects
+ containsRef == false
+
+ The document contains a reference XObject (Ref key in the form XObject dictionary)
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t01.xml b/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t01.xml
new file mode 100644
index 00000000..5b286a8c
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t01.xml
@@ -0,0 +1,35 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.9 Transparency - Blend modes
+ Only blend modes that are specified in ISO 32000-2:2020 shall be used for the value of the BM key
+ in a graphic state dictionary or an annotation dictionary
+
+
+
+
+
+ Only blend modes that are specified in ISO 32000-2:2020 shall be used for the value of the BM
+ key in a graphic state dictionary or an annotation dictionary
+ internalRepresentation == "Normal" || internalRepresentation == "Compatible" ||
+ internalRepresentation == "Multiply" || internalRepresentation == "Screen" ||
+ internalRepresentation == "Overlay" || internalRepresentation == "Darken" ||
+ internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" ||
+ internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" ||
+ internalRepresentation == "SoftLight" || internalRepresentation == "Difference" ||
+ internalRepresentation == "Exclusion" || internalRepresentation == "Hue" ||
+ internalRepresentation == "Saturation" || internalRepresentation == "Color" ||
+ internalRepresentation == "Luminosity"
+
+ The document uses the blend mode %1 not defined in ISO 32000-2:2020
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t02.xml b/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t02.xml
new file mode 100644
index 00000000..755aa746
--- /dev/null
+++ b/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t02.xml
@@ -0,0 +1,34 @@
+
+
+
+ ISO 19005-4:2020 - 6.2.9 Transparency - Page transparency
+ If the document does not contain a PDF/A output intent, then all pages that contain transparency
+ shall either have a page-level PDF/A output intent or the page dictionary shall include the Group key, and
+ the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall
+ be used as the default blending colour space
+
+
+
+
+
+ If the document does not contain a PDF/A output intent, then all pages that contain transparency
+ shall either have a page-level PDF/A output intent or the page dictionary shall include the Group key, and
+ the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall
+ be used as the default blending colour space
+ gDocumentOutputCS != null || outputColorSpace != null || containsGroupCS == true || containsTransparency == false
+
+ The page contains transparent objects with no blending colour space defined
+
+
+
+
+
+
+
+
+
+ null
+ outputColorSpace
+
+
+
diff --git a/PDF_A/4/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml b/PDF_A/4/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml
new file mode 100644
index 00000000..2c03da04
--- /dev/null
+++ b/PDF_A/4/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml
@@ -0,0 +1,32 @@
+
+
+
+ ISO 19005-4:2020 - 6.3.1 Annotation types
+ Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted.
+ Additionally, the Sound, Screen, Movie, 3D, RichMedia and FileAttachment types shall not be permitted
+
+
+
+
+
+ Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted.
+ Additionally, the Sound, Screen, Movie, 3D, RichMedia and FileAttachment types shall not be permitted
+ Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" ||
+ Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" ||
+ Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" ||
+ Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" ||
+ Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" ||
+ Subtype == "Projection"
+
+ Unknown or not permitted Annotation type %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml b/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml
new file mode 100644
index 00000000..7cc4480f
--- /dev/null
+++ b/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.3.2 Annotation dictionaries - F key
+ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key
+
+
+
+
+
+ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key
+ Subtype == "Popup" || F != null
+
+ A dictionary of %1 annotation does not contain F key
+
+ Subtype
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml b/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml
new file mode 100644
index 00000000..44792027
--- /dev/null
+++ b/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-4:2020 - 6.3.2 Annotation dictionaries - Generic flag values
+ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0
+
+
+
+
+
+ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0
+ F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0)
+
+ Annotation flags are set the annotation to be hidden/invisible or non-printable
+ (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6)
+
+ F
+ (F & 4) >> 2
+ (F & 2) >> 1
+ (F & 1)
+ (F & 32) >> 5
+ (F & 256) >> 8
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml
new file mode 100644
index 00000000..3646ef04
--- /dev/null
+++ b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml
@@ -0,0 +1,31 @@
+
+
+
+ ISO 19005-4:2020 - 6.3.3 Annotations appearances - Normal appearance
+ Every annotation (including those whose Subtype value is Widget, as used for form fields), except
+ for the two cases listed below, shall have at least one appearance dictionary:
+ Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to the
+ value at index 3 and the value at index 2 is equal to the value at index 4;
+ - annotations whose Subtype value is Popup, Link or Projection
+
+
+
+
+
+ Every annotation (including those whose Subtype value is Widget, as used for form fields),
+ except for the two cases listed below, shall have at least one appearance dictionary:
+ Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to
+ the value at index 3 and the value at index 2 is equal to the value at index 4;
+ - annotations whose Subtype value is Popup, Link or Projection
+ (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null
+
+ An annotation does not contain an appearance dictionary
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml
new file mode 100644
index 00000000..0916b357
--- /dev/null
+++ b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.3.3 Annotations appearances - Normal appearance
+ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as
+ its value shall contain only the N key
+
+
+
+
+
+ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as
+ its value shall contain only the N key
+ AP == null || AP == "N"
+
+ Annotation's appearance dictionary contains entries %1 other than N
+
+ AP.split('&').filter(elem => elem != 'N').toString()
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml
new file mode 100644
index 00000000..8ded92b6
--- /dev/null
+++ b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-4:2020 - 6.3.3 Annotations appearances - Normal appearance
+ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn,
+ the value of the N key shall be an appearance subdictionary
+
+
+
+
+
+ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn,
+ the value of the N key shall be an appearance subdictionary
+ AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0)
+
+ An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of
+ Btn, but the value of the N key is %1 instead of appearance subdictionary
+
+ N_type
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml
new file mode 100644
index 00000000..25b28d5c
--- /dev/null
+++ b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-4:2020 - 6.3.3 Annotations appearances - Normal appearance
+ If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated
+ with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
+
+
+
+
+
+ If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated
+ with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
+ AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream"
+
+ An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the
+ value of the N key is not an appearance stream
+
+ Subtype
+ FT
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml b/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml
new file mode 100644
index 00000000..28ad9563
--- /dev/null
+++ b/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.4 Interactive Fields - 6.4.1 General - Widget annotation actions
+ A Widget annotation dictionary shall not contain the A key
+
+
+
+
+
+ A Widget annotation dictionary shall not contain the A key
+ containsA == false
+
+ A Widget annotation contains A entry
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml b/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml
new file mode 100644
index 00000000..7148faf7
--- /dev/null
+++ b/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.4 Interactive Forms - 6.4.1 General - NeedAppearances flag
+ The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
+
+
+
+
+
+ The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
+ NeedAppearances == null || NeedAppearances == false
+
+ The interactive form dictionary contains the NeedAppearances flag with value true
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml b/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml
new file mode 100644
index 00000000..7f2100ed
--- /dev/null
+++ b/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.4 Interactive Forms - 6.4.2 XFA forms - XFA key
+ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-4 file,
+ if present, shall not contain the XFA key
+
+
+
+
+
+ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-4 file,
+ if present, shall not contain the XFA key
+ containsXFA == false
+
+ The interactive form dictionary contains the XFA key
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml b/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml
new file mode 100644
index 00000000..538ce39f
--- /dev/null
+++ b/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.4 Interactive Forms - 6.4.2 XFA forms - NeedsRendering flag
+ A document's Catalog shall not contain the NeedsRendering key
+
+
+
+
+
+ A document's Catalog shall not contain the NeedsRendering key
+ NeedsRendering == false
+
+ A document's Catalog contains NeedsRendering flag set to true
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml
new file mode 100644
index 00000000..27ecfabb
--- /dev/null
+++ b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 19005-4:2020 - 6.6 Actions - 6.6.1 General - Action types
+ The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and GoTo3DView
+ actions shall not be permitted. Additionally, the obsoleted set-state and no-op actions shall not be permitted
+
+
+
+
+
+ The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and
+ GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and no-op actions shall
+ not be permitted
+ S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" ||
+ S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp"
+
+ Unknown or not permitted Action type %1
+
+ S
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t02.xml b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t02.xml
new file mode 100644
index 00000000..75aeb597
--- /dev/null
+++ b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t02.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.6 Actions - 6.6.1 General - Named actions
+ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
+
+
+
+
+
+ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
+ N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
+
+ Unknown or not permitted named action %1
+
+ N
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml b/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml
new file mode 100644
index 00000000..a0784a09
--- /dev/null
+++ b/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml
@@ -0,0 +1,30 @@
+
+
+
+ ISO 19005-4:2020 - 6.6.3 Trigger events
+ If a document catalog dictionary or page dictionary or an annotation dictionary (other than a
+ Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary)
+ shall only contain keys from the following list: E, X, D, U, Fo, and Bl
+
+
+
+
+
+ If a document catalog dictionary or page dictionary or an annotation dictionary (other than a
+ Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary)
+ shall only contain keys from the following list: E, X, D, U, Fo, and Bl
+ parentType == 'WidgetAnnot' || parentType == 'FormField' || entries.split('&').filter(elem => elem != 'E' &&
+ elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 || entries == ''
+
+ Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D,
+ U, Fo, and Bl
+
+ entries.split('&').filter(elem => elem != 'E' && elem != 'X' && elem != 'D' &&
+ elem != 'U' && elem != 'Fo' && elem != 'Bl').toString()
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t01.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t01.xml
new file mode 100644
index 00000000..f9656143
--- /dev/null
+++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.7.2.1 General - Metadata key in the Catalog
+ The document catalog dictionary of a conforming file shall contain the Metadata key whose value is
+ a metadata stream as defined in ISO 32000-2:2020, 14.3.2
+
+
+
+
+
+ The document catalog dictionary of a conforming file shall contain the Metadata key whose value
+ is a metadata stream as defined in ISO 32000-2:2020, 14.3.2
+ metadata_size == 1
+
+ The document catalog dictionary doesn't contain metadata key
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t02.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t02.xml
new file mode 100644
index 00000000..1b8495e9
--- /dev/null
+++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.7.2.1 General - bytes attribute
+ The bytes attribute shall not be used in the header of an XMP packet
+
+
+
+
+
+ The bytes attribute shall not be used in the header of an XMP packet
+ bytes == null
+
+ The XMP Package contains bytes attribute
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t03.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t03.xml
new file mode 100644
index 00000000..597fba83
--- /dev/null
+++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t03.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.7.2.1 General - encoding attribute
+ The encoding attribute shall not be used in the header of an XMP packet
+
+
+
+
+
+ The encoding attribute shall not be used in the header of an XMP packet
+ encoding == null
+
+ The XMP Package contains encoding attribute
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml
new file mode 100644
index 00000000..0d22a88c
--- /dev/null
+++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.7.2.1 General - Conforms to XMP Specification.
+ All content of all XMP packets located in any metadata stream present in the PDF shall be
+ well-formed as defined by XMP (ISO 16684-1)
+
+
+
+
+
+ All content of all XMP packets located in any metadata stream present in the PDF shall be
+ well-formed as defined by XMP (ISO 16684-1)
+ isSerializationValid
+
+ A metadata stream is serialized incorrectly and can not be parsed
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t05.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t05.xml
new file mode 100644
index 00000000..e2159959
--- /dev/null
+++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t05.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.7.2.1 General - Conforms to XMP Specification.
+ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8
+
+
+
+
+
+ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8
+ actualEncoding == "UTF-8"
+
+ The XMP package uses encoding %1 different from UTF-8
+
+ actualEncoding
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t01.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t01.xml
new file mode 100644
index 00000000..04018bb7
--- /dev/null
+++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.7.3 Version identification - PDF/A Identification Schema.
+ The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.
+ The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/"
+
+
+
+
+
+ The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.
+ The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/"
+ Identification_size == 1
+
+ The document metadata stream doesn't contains PDF/A Identification Schema
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t02.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t02.xml
new file mode 100644
index 00000000..03044678
--- /dev/null
+++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.7.3 Version identification - Part number.
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+
+
+
+
+
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+ part == 4
+
+ The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file
+
+ part
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml
new file mode 100644
index 00000000..2297705e
--- /dev/null
+++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.7.3 Version identification - Conformance level.
+ A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any "pdfaid:conformance"
+
+
+
+
+
+ A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any "pdfaid:conformance"
+ conformance == null
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of null for PDF/A-4 conforming file
+
+ conformance
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t04.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t04.xml
new file mode 100644
index 00000000..393e864c
--- /dev/null
+++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t04.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.7.3 Version identification - PDF/A Identification Schema property part.
+ Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+
+
+
+
+
+ Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ partPrefix == null || partPrefix == "pdfaid"
+
+ Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml
new file mode 100644
index 00000000..7e89ceae
--- /dev/null
+++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.7.3 Version identification - rev property
+ The value of "pdfaid:rev" shall be the four digit year
+
+
+
+
+
+ The value of "pdfaid:rev" shall be the four digit year
+ /^\d{4}$/.test(rev)
+
+ The value of "pdfaid:rev" (%1) is not the four digit year
+
+ rev
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t06.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t06.xml
new file mode 100644
index 00000000..a2e7efaa
--- /dev/null
+++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t06.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 19005-4:2020 - 6.7.3 Version identification - PDF/A Identification Schema property rev.
+ Property "rev" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+
+
+
+
+
+ Property "rev" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ revPrefix == null || revPrefix == "pdfaid"
+
+ Property "rev" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ revPrefix
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml
new file mode 100644
index 00000000..32890ad4
--- /dev/null
+++ b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 19005-4:2020 - 6.9 Embedded files - Subtype
+ The embedded file stream dictionary shall include a valid MIME type value for the Subtype key.
+ If the MIME type is not known, the value "application/octet-stream" shall be used
+
+
+
+
+
+ The embedded file stream dictionary shall include a valid MIME type value for the Subtype key.
+ If the MIME type is not known, the value "application/octet-stream" shall be used
+ Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype)
+
+ MIME type %1 of an embedded file is missing or invalid
+
+ Subtype
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t02.xml b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t02.xml
new file mode 100644
index 00000000..c72d202d
--- /dev/null
+++ b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t02.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.9 Embedded files - F and UF keys
+ The file specification dictionary for an embedded file shall contain the F and UF keys
+
+
+
+
+
+ The file specification dictionary for an embedded file shall contain the F and UF keys
+ containsEF == false || (F != null && UF != null)
+
+ The file specification dictionary for an embedded file does not contain either F or UF key
+ (F = %1, UF = %2)
+
+ F
+ UF
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t03.xml b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t03.xml
new file mode 100644
index 00000000..9643bbbd
--- /dev/null
+++ b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t03.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 19005-4:2020 - 6.9 Embedded files
+ All of the embedded files shall be compliant with ISO 19005-1, 19005-2 or 19005-4
+
+
+
+
+
+ All of the embedded files shall be compliant with ISO 19005-1, 19005-2 or 19005-4
+ isValidPDFA124 == true
+
+ An embedded file does not comply to either ISO 19005-1, ISO 19005-2 or ISO 19005-4
+
+
+
+
+
+
+
diff --git a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t04.xml b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t04.xml
new file mode 100644
index 00000000..b43ff5ff
--- /dev/null
+++ b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t04.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.9 Embedded files - AFRelationship
+ Each embedded file’s file specification dictionary shall contain an AFRelationship key
+ (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF
+
+
+
+
+
+ Each embedded file’s file specification dictionary shall contain an AFRelationship key
+ (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF
+ containsEF == false || AFRelationship != null
+
+ The file specification dictionary for an embedded file does not contain the AFRelationship key
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t03.xml b/PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t03.xml
new file mode 100644
index 00000000..c2ba9e34
--- /dev/null
+++ b/PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t03.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 19005-4:2020 - 6.1.6 Stream objects - 6.1.6.1 General - 3D stream
+ The Subtype entry in a 3D stream dictionary (ISO 32000-2:2020, 13.6.3) shall have a value which is
+ either U3D or PRC as described in Annex B
+
+
+
+
+
+ The Subtype entry in a 3D stream dictionary (ISO 32000-2:2020, 13.6.3) shall have a value which
+ is either U3D or PRC as described in Annex B
+ Subtype == 'U3D' || Subtype == 'PRC'
+
+ The Subtype entry in the 3D stream dictionary (ISO 32000-2:2020, 13.6.3) has value %1 that is
+ neither U3D nor PRC
+
+ Subtype
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4e/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml b/PDF_A/4e/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml
new file mode 100644
index 00000000..562a4f16
--- /dev/null
+++ b/PDF_A/4e/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml
@@ -0,0 +1,34 @@
+
+
+
+ ISO 19005-4:2020 - 6.3.1 Annotation types
+ Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted.
+ Additionally, the Sound, Screen and Movie and FileAttachment types shall not be permitted. 3D and RichMedia
+ types shall only be permitted in a PDF/A-4e compliant file as described in Annex B
+
+
+
+
+
+ Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted.
+ Additionally, the Sound, Screen, Movie and FileAttachment types shall not be permitted. 3D and RichMedia
+ types shall only be permitted in a PDF/A-4e compliant file as described in Annex B
+ Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" ||
+ Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" ||
+ Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" ||
+ Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" ||
+ Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" ||
+ Subtype == "Redact" || Subtype == "3D" || Subtype == "Projection" || Subtype == "RichMedia"
+
+ Unknown or not permitted Annotation type %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml b/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml
new file mode 100644
index 00000000..041a79ee
--- /dev/null
+++ b/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml
@@ -0,0 +1,32 @@
+
+
+
+ ISO 19005-4:2020 - 6.6 Actions - 6.6.1 General - Action types
+ The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition and Trans actions shall not be
+ permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The SetOCGState
+ and GoTo3DView actions shall only be permitted in a PDF/A-4e compliant file as described in Annex B
+
+
+
+
+
+ The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition and Trans actions shall not be
+ permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The
+ SetOCGState and GoTo3DView actions shall only be permitted in a PDF/A-4e compliant file as described in
+ Annex B
+ S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" ||
+ S == "SubmitForm" || S == "SetOCGState" || S == "GoTo3DView" || S == "JavaScript" ||
+ S == "RichMediaExecute" || S == "GoToDp"
+
+ Unknown or not permitted Action type %1
+
+ S
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml b/PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml
new file mode 100644
index 00000000..e7bd738a
--- /dev/null
+++ b/PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.7.3 Version and conformance level identification - Conformance level.
+ A PDF/A-4e conforming file (as described in Annex B) shall specify the value of "pdfaid:conformance" as E
+
+
+
+
+
+ A PDF/A-4e conforming file (as described in Annex B) shall specify the value of "pdfaid:conformance" as E
+ conformance == "E"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "E" for PDF/A-4E conforming file
+
+ conformance
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4f/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml b/PDF_A/4f/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml
new file mode 100644
index 00000000..3567fb85
--- /dev/null
+++ b/PDF_A/4f/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml
@@ -0,0 +1,33 @@
+
+
+
+ ISO 19005-4:2020 - 6.3.1 Annotation types
+ Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted.
+ Additionally, the Sound, Screen, Movie, 3D and RichMedia types shall not be permitted
+
+
+
+
+
+ Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted.
+ Additionally, the Sound, Screen, Movie, 3D and RichMedia types shall not be permitted. The FileAttachment type shall
+ only be permitted in a PDF/A-4f compliant file as described in Annex A
+ Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" ||
+ Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" ||
+ Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" ||
+ Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" ||
+ Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" ||
+ Subtype == "Watermark" || Subtype == "Redact" || Subtype == "Projection"
+
+ Unknown or not permitted Annotation type %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml b/PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml
new file mode 100644
index 00000000..0e46ac99
--- /dev/null
+++ b/PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 19005-4:2020 - 6.7.3 Version and conformance level identification - Conformance level.
+ A PDF/A-4f conforming file (as described in Annex A) shall specify the value of "pdfaid:conformance" as F
+
+
+
+
+
+ A PDF/A-4f conforming file (as described in Annex A) shall specify the value of "pdfaid:conformance" as F
+ conformance == "F"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "F" for PDF/A-4F conforming file
+
+ conformance
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/4f/6.9 Embedded files/verapdf-profile-6-9-t05.xml b/PDF_A/4f/6.9 Embedded files/verapdf-profile-6-9-t05.xml
new file mode 100644
index 00000000..07ca9a30
--- /dev/null
+++ b/PDF_A/4f/6.9 Embedded files/verapdf-profile-6-9-t05.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 19005-4:2020 - 6.9 Embedded files
+ A PDF/A-4f conforming file shall contain an EmbeddedFiles key in the name dictionary of the
+ document catalog dictionary
+
+
+
+
+
+ A PDF/A-4f conforming file shall contain an EmbeddedFiles key in the name dictionary of the
+ document catalog dictionary
+ containsEmbeddedFiles == true
+
+ A PDF/A-4f conforming file does not contain an EmbeddedFiles key in the name dictionary of the
+ document catalog dictionary
+
+
+
+
+
+
+
+
+
diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml
new file mode 100644
index 00000000..d4fb6b7f
--- /dev/null
+++ b/PDF_A/PDFA-1A.xml
@@ -0,0 +1,1722 @@
+
+
+
+ PDF/A-1A validation profile
+ Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
+
+
+
+
+
+ The % character of the file header shall occur at byte offset 0 of the file. The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms
+ headerOffset == 0 && /%PDF-\d\.\d/.test(header)
+
+ File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-n.m
+
+ header
+ headerOffset
+
+
+
+
+
+
+
+
+ The file header line shall be immediately followed by a comment consisting of a % character followed by at least four characters, each of whose encoded byte values shall have a decimal value greater than 127
+ headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
+
+ Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4)
+
+ headerByte1
+ headerByte2
+ headerByte3
+ headerByte4
+
+
+
+
+
+
+ The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2
+ (isLinearized == true) ? (firstPageID != null) : (lastID != null)
+
+ Missing ID in the document trailer
+
+
+
+
+
+
+ The keyword Encrypt shall not be used in the trailer dictionary
+ isEncrypted != true
+
+ Encrypt keyword is present in the trailer dictionary
+
+
+
+
+
+
+ No data shall follow the last end-of-file marker except a single optional end-of-line marker
+ postEOFDataSize == 0
+
+ %1 byte(s) of data is present after the last end-of-file marker
+
+ postEOFDataSize
+
+
+
+
+
+
+ In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary and the last trailer dictionary, the value to both instances of the ID keyword shall be identical
+ (isLinearized != true) || lastID == null || (firstPageID == lastID)
+
+ Last ID (%1) is present in the Linearized PDF and does not match the first page ID (%2)
+
+ lastIDValue
+ firstPageIDValue
+
+
+
+
+
+
+
+
+ In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h)
+ subsectionHeaderSpaceSeparated == true
+
+ Extra or missing spacings around in a subsection header of the cross reference table
+
+
+
+
+
+
+ The xref keyword and the cross reference subsection header shall be separated by a single EOL marker
+ xrefEOLMarkersComplyPDFA
+
+ Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table
+
+
+
+
+
+
+ Xref streams shall not be used
+ containsXRefStream == false
+
+ The document uses xref streams
+
+
+
+
+
+
+ Hexadecimal strings shall contain an even number of non-white-space characters
+ (isHex != true) || hexCount % 2 == 0
+
+ A hexadecimal string contains odd number (%1) of non-white-space characters
+
+ hexCount
+
+
+
+
+
+
+ All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f
+ (isHex != true) || containsOnlyHex == true
+
+ Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f
+
+
+
+
+
+
+ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword
+ Length == realLength
+
+ Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s))
+
+ realLength
+ Length
+
+
+
+
+
+
+ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker
+ streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true
+
+ Extra spacings or missing EOL characters around keywords 'stream' and 'endstream'
+
+
+
+
+
+
+ A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys
+ F == null && FFilter == null && FDecodeParms == null
+
+ A stream object dictionary contains %1 key(s)
+
+ keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString()
+
+
+
+
+
+
+
+
+ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker
+ spacingCompliesPDFA
+
+ Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj'
+
+
+
+
+
+
+ The LZWDecode filter shall not be permitted
+ internalRepresentation != "LZWDecode"
+
+ Unknown or not permitted Stream filter %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+ The LZWDecode filter shall not be permitted
+ internalRepresentation != "LZWDecode" && internalRepresentation != "LZW"
+
+ LZW compression is used in the inline image
+
+
+
+
+
+
+ A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key
+ containsEF == false
+
+ A file specification dictionary contains the EF key
+
+
+
+
+
+
+
+
+ A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key
+ containsEmbeddedFiles == false
+
+ The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary)
+
+
+
+
+
+
+
+
+ Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648
+ (intValue <= 2147483647) && (intValue >= -2147483648)
+
+ Integer value %1 out of range
+
+ intValue
+
+
+
+
+
+
+
+
+ Absolute real value must be less than or equal to 32767.0
+ (realValue >= -32767.0) && (realValue <= 32767.0)
+
+ Real value %1 out of range
+
+ realValue
+
+
+
+
+
+
+
+
+ Maximum length of a string (in bytes) is 65535
+ value.length() < 65536
+
+ String length (%1) exceeded 65535
+
+ value.length()
+
+
+
+
+
+
+
+
+ Maximum length of a name (in bytes) is 127
+ internalRepresentation.length() <= 127
+
+ Name length (%1) exceeded 127
+
+ internalRepresentation.length()
+
+
+
+
+
+
+
+
+ Maximum capacity of an array (in elements) is 8191
+ size <= 8191
+
+ Array capacity (%1) exceeded 8191
+
+ size
+
+
+
+
+
+
+
+
+ Maximum capacity of a dictionary (in entries) is 4095
+ size <= 4095
+
+ Dictionary capacity (%1) exceeded 4095
+
+ size
+
+
+
+
+
+
+
+
+ Maximum number of indirect objects in a PDF file is 8,388,607
+ nrIndirects <= 8388607
+
+ Number of indirect objects in a PDF file (%1) exceeded 8,388,607
+
+ nrIndirects
+
+
+
+
+
+
+
+
+ Maximum depth of graphics state nesting by q and Q operators is 28
+ nestingLevel <= 28
+
+ Depth of graphics state nesting of q/Q operators (%1) exceeded 28
+
+ nestingLevel
+
+
+
+
+
+
+
+
+ Maximum number of DeviceN components is 8
+ nrComponents <= 8
+
+ Number of DeviceN components (%1) exceeded 8
+
+ nrComponents
+
+
+
+
+
+
+
+
+ Maximum value of a CID (character identifier) is 65,535
+ maximalCID <= 65535
+
+ Value of a CID (%1) exceeded 65,535
+
+ maximalCID
+
+
+
+
+
+
+
+
+ The document catalog dictionary shall not contain a key with the name OCProperties
+ isOptionalContentPresent == false
+
+ The document catalog dictionary contains the OCProperties entry
+
+
+
+
+
+
+ A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key
+ (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0
+
+ The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information
+
+
+
+
+
+
+
+
+ If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream
+ sameOutputProfileIndirect == true
+
+ File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1)
+
+ outputProfileIndirects
+
+
+
+
+
+
+ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5
+ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0
+
+ The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.4 requirements
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. As of PDF 1.4, N must be 1, 3, or 4
+ N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK"))
+
+ The N entry (value %1) in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile (color space %2)
+
+ N
+ colorSpace
+
+
+
+
+
+
+
+
+ DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space
+ gOutputCS != null && gOutputCS == "RGB "
+
+ DeviceRGB colour space is used without RGB output intent profile
+
+
+
+
+
+
+ DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space
+ gOutputCS != null && gOutputCS == "CMYK"
+
+ DeviceCMYK colour space is used without CMYK output intent profile
+
+
+
+
+
+
+ If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2
+ gOutputCS != null
+
+ DeviceGray colour space is used without output intent profile
+
+
+
+
+
+
+ An Image dictionary shall not contain the Alternates key
+ containsAlternates == false
+
+ Alternates key is present in the Image dictionary
+
+
+
+
+
+
+ An XObject dictionary (Image or Form) shall not contain the OPI key
+ containsOPI == false
+
+ OPI key is present in the XObject dictionary
+
+
+
+
+
+
+ If an Image dictionary contains the Interpolate key, its value shall be false
+ Interpolate == false
+
+ The value of the Interpolate key in the Image dictionary is true
+
+
+
+
+
+
+ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4 or 8
+ BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8
+
+ The value of the BitsPerComponent key in the Image dictionary is %1
+
+ BitsPerComponent
+
+
+
+
+
+
+
+
+ A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key
+ (Subtype2 == null || Subtype2 != "PS") && containsPS == false
+
+ The form XObject dictionary contains a PS key or Subtype2 key with value PS
+
+
+
+
+
+
+ A conforming file shall not contain any reference XObjects
+ containsRef == false
+
+ The document contains a reference XObject (Ref key in the form XObject dictionary)
+
+
+
+
+
+
+ A conforming file shall not contain any PostScript XObjects
+ Subtype != "PS"
+
+ The document contains a PostScript XObject
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR key
+ TR == null
+
+ An ExtGState dictionary contains the TR key
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR2 key with a value other than Default
+ TR2 == null || TR2 == "Default"
+
+ An ExtGState dictionary contains the TR2 key with value %1 other than Default
+
+ TR2
+
+
+
+
+
+
+ Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation
+ internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation"
+
+ A rendering intent with non-standard value %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+ A content stream shall not contain any operators not defined in PDF Reference even if such operators are bracketed by the BX/EX compatibility operators
+ false
+
+ A content stream contains operator %1 not defined in PDF Reference
+
+ name
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary
+ Type == "Font"
+
+ A Font dictionary has value %1 of Type entry instead of Font
+
+ Type
+
+
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts
+ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
+
+ Invalid Subtype entry in font dictionary with value %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. BaseFont - name - (Required) The PostScript name of the font
+ Subtype == "Type3" || fontName != null
+
+ A BaseFont entry is missing or has invalid type
+
+
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array
+ isStandard == true || FirstChar != null
+
+ A non-standard simple font dictionary has missing or invalid FirstChar entry
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array
+ isStandard == true || LastChar != null
+
+ A non-standard simple font dictionary has missing or invalid LastChar entry
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths
+ isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
+
+ Widths array is missing or has invalid size %1 instead of %2
+
+ Widths_size
+ LastChar - FirstChar + 1
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF) and CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF)
+ fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C"
+
+ Unsupported font file format %1 of the embedded font
+
+ fontFileSubtype
+
+
+
+
+
+
+
+
+
+ For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry)
+
+ Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+
+
+
+
+
+
+
+
+
+ For all Type 2 CIDFonts that are used for rendering, the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in PDF Reference Table 5.13
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || renderingMode == 3
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+
+ All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4
+ CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1
+
+ A CMap is different from "Identity-H" or "Identity-V" and is not embedded
+
+
+
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+ The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+ Embedded font programs shall define all font glyphs referenced for rendering with conforming file
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+ For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18
+ fontName.search(/[A-Z]{6}\+/) != 0 || (CharSet != null && charSetListsAllGlyphs == true)
+
+ A Type1 font subset does not define CharSet entry in its Descriptor dictionary
+
+
+
+
+
+
+
+
+ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20
+ fontName.search(/[A-Z]{6}\+/) != 0 || (containsCIDSet == true && cidSetListsAllGlyphs == true)
+
+ A CIDSet entry in the Font descriptor is missing or does not correctly identify all glyphs present in the embedded font subset and used for rendering
+
+
+
+
+
+
+
+
+ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+
+
+ All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && containsDifferences == false)
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2)
+
+ Encoding
+ containsDifferences
+
+
+
+
+
+
+
+
+ All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+
+
+ Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding
+ isSymbolic == false || nrCmaps == 1
+
+ The embedded font program for a symbolic TrueType font contains %1 cmap subtables
+
+ nrCmaps
+
+
+
+
+
+
+
+
+ The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, as described in PDF Reference 5.9, unless the font meets any of the following three conditions: (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 or Adobe-Korea1 character collections
+ toUnicode != null
+
+ The font does not define Unicode character map
+
+
+
+
+
+
+ If an SMask key appears in an ExtGState dictionary, its value shall be None
+ SMask == null || SMask == "None"
+
+ An ExtGState contains SMask key with value %1 instead of None
+
+ SMask
+
+
+
+
+
+
+ An XObject dictionary shall not contain the SMask key
+ containsSMask == false
+
+ An XObject contains an SMask key
+
+
+
+
+
+
+
+
+ A Group object with an S key with a value of Transparency shall not be included in a form XObject. A Group object with an S key with a value of Transparency shall not be included in a page dictionary
+ S != "Transparency"
+
+ A transparency group is present in a form XObject or page dictionary
+
+
+
+
+
+
+
+
+ The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible
+ BM == null || BM == "Normal" || BM == "Compatible"
+
+ An ExtGState dictionary contains the BM key (blend mode) with value %1 that is neither Normal or Compatible
+
+ BM
+
+
+
+
+
+
+ The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0
+ CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001
+
+ An ExtGState dictionary contains the CA key (stroke alpha) with value %1 other than 1.0
+
+ CA
+
+
+
+
+
+
+ The following keys, if present in an ExtGState object, shall have the values shown: ca - 1.0
+ ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001
+
+ An ExtGState dictionary contains the ca key (fill alpha) with value %1 other than 1.0
+
+ ca
+
+
+
+
+
+
+ Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, Sound and Movie types shall not be permitted
+ Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet"
+
+ Unknown or not permitted Annotation type %1
+
+ Subtype
+
+
+
+
+
+
+
+
+ An annotation dictionary shall not contain the CA key with a value other than 1.0
+ CA == null || CA == 1.0
+
+ An annotation dictionary contains the CA key with value %1 instead of 1.0
+
+ CA
+
+
+
+
+
+
+ An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, Invisible and NoView flag bits shall be set to 0
+ F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0
+
+ Annotation flags are either missing or set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5)
+
+ F
+ F != null ? (F & 4) >> 2 : null
+ F != null ? (F & 2) >> 1 : null
+ F != null ? (F & 1) : null
+ F != null ? (F & 32) >> 5 : null
+
+
+
+
+
+
+ An annotation dictionary shall not contain the C array or the IC array unless the colour space of the DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB
+ (containsC == false && containsIC == false) || gOutputCS == "RGB "
+
+ Annotation's color (C present = %1) or interior color (IC present = %2) is used without specifying RGB-based destination output profile
+
+ containsC
+ containsIC
+
+
+
+
+
+
+ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key
+ AP == null || AP == "N"
+
+ Annotation's appearance dictionary contains entries %1 other than N
+
+ AP.split('&').filter(elem => elem != 'N').toString()
+
+
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary
+ AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0)
+
+ An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary
+
+ N_type
+
+
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
+ AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream"
+
+ An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream
+
+ Subtype
+ FT
+
+
+
+
+
+
+
+
+ The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2)
+ S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"
+
+ Unknown or not permitted Action type %1
+
+ S
+
+
+
+
+
+
+
+
+ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
+ N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
+
+ Unknown or not permitted named action %1
+
+ N
+
+
+
+
+
+
+
+
+ Interactive form fields shall not perform actions of any type
+ containsA == false
+
+ Interactive form field contains an action object ('A' key)
+
+
+
+
+
+
+ A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ A Widget annotation contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+ A Field dictionary shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ A Field dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+ The document catalog dictionary shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ The document catalog dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+ The document catalog dictionary of a conforming file shall contain the Metadata key
+ metadata_size == 1
+
+ The document catalog dictionary doesn't contain metadata key
+
+
+
+
+
+
+ Metadata object stream dictionaries shall not contain the Filter key
+ Filter == null
+
+ The metadata object stream dictionary contains the Filter key
+
+
+
+
+
+
+ The value of CreationDate entry from the document information dictionary, if present, and its analogous XMP property "xmp:CreateDate" shall be equivalent
+ doCreationDatesMatch != false
+
+ The value of CreationDate entry from the document Info dictionary and its matching XMP property "xmp:CreateDate" are not equivalent (Info /CreationDate = %1, XMP xmp:CreateDate = %2)
+
+ CreationDate
+ XMPCreateDate
+
+
+
+
+
+
+
+
+ The value of Title entry from the document information dictionary, if present, and its analogous XMP property "dc:title['x-default']" shall be equivalent
+ Title == null || Title == XMPTitle
+
+ The value of Title entry from the document Info dictionary and its matching XMP property "dc:title['x-default']" are not equivalent (Info /Title = %1, XMP dc:title['x-default'] = %2)
+
+ Title
+ XMPTitle
+
+
+
+
+
+
+
+
+ The value of Author entry from the document information dictionary, if present, and its analogous XMP property "dc:creator" shall be equivalent. dc:creator shall contain exactly one entry
+ Author == null || (Author == XMPCreator && XMPCreatorSize == 1)
+
+ The value of Author entry from the document Info dictionary and its matching XMP property "dc:creator" are not equivalent (Info /Author = %1, XMP dc:creator = %2)
+
+ Author
+ XMPCreator
+
+
+
+
+
+
+
+
+ The value of Subject entry from the document information dictionary, if present, and its analogous XMP property "dc:description['x-default']" shall be equivalent
+ Subject == null || Subject == XMPDescription
+
+ The value of Subject entry from the document Info dictionary and its matching XMP property "dc:description['x-default']" are not equivalent (Info /Subject = %1, XMP dc:description['x-default'] = %2)
+
+ Subject
+ XMPDescription
+
+
+
+
+
+
+
+
+ The value of Keywords entry from the document information dictionary, if present, and its analogous XMP property "pdf:Keywords" shall be equivalent
+ Keywords == null || Keywords == XMPKeywords
+
+ The value of Keywords entry from the document Info dictionary and its matching XMP property "pdf:Keywords" are not equivalent (Info /Keywords = %1, XMP pdf:Keywords = %2)
+
+ Keywords
+ XMPKeywords
+
+
+
+
+
+
+
+
+ The value of Creator entry from the document information dictionary, if present, and its analogous XMP property "xmp:CreatorTool" shall be equivalent
+ Creator == null || Creator == XMPCreatorTool
+
+ The value of Creator entry from the document Info dictionary and its matching XMP property "xmp:CreatorTool" are not equivalent (Info /Creator = %1, XMP xmp:CreatorTool = %2)
+
+ Creator
+ XMPCreatorTool
+
+
+
+
+
+
+
+
+ The value of Producer entry from the document information dictionary, if present, and its analogous XMP property "pdf:Producer" shall be equivalent
+ Producer == null || Producer == XMPProducer
+
+ The value of Producer entry from the document Info dictionary and its matching XMP property "pdf:Producer" are not equivalent (Info /Producer = %1, XMP pdf:Producer = %2)
+
+ Producer
+ XMPProducer
+
+
+
+
+
+
+
+
+ The value of ModDate entry from the document information dictionary, if present, and its analogous XMP property "xmp:ModifyDate" shall be equivalent
+ doModDatesMatch != false
+
+ The value of ModDate entry from the document Info dictionary and its matching XMP property "xmp:ModifyDate" are not equivalent (Info /ModDate = %1, XMP xmp:ModifyDate = %2)
+
+ ModDate
+ XMPModifyDate
+
+
+
+
+
+
+
+
+ The bytes attribute shall not be used in the header of an XMP packet
+ bytes == null
+
+ The XMP Package contains bytes attribute
+
+
+
+
+
+
+ The encoding attribute shall not be used in the header of an XMP packet
+ encoding == null
+
+ The XMP Package contains encoding attribute
+
+
+
+
+
+
+ Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause
+ containsUndefinedFields == false
+
+ An extension schema object contains field(s) %1 not defined by the specification
+
+ undefinedFields
+
+
+
+
+
+
+
+
+ The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas
+ isValidBag == true && prefix == "pdfaExtension"
+
+ The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix 'pdfaExtension' (prefix = %2)
+
+ isValidBag
+ prefix
+
+
+
+
+
+
+
+
+ Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema'
+ isSchemaValidText == true && schemaPrefix == "pdfaSchema"
+
+ Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2)
+
+ schemaPrefix
+ isSchemaValidText
+
+
+
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaSchema'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema"
+
+ Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+
+
+ Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema'
+ isPrefixValidText == true && prefixPrefix == "pdfaSchema"
+
+ Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+
+
+ Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq Property and namespace prefix 'pdfaSchema'
+ isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema")
+
+ Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2)
+
+ propertyPrefix
+ isPropertyValidSeq
+
+
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq ValueType and namespace prefix 'pdfaSchema'
+ isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema")
+
+ Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2)
+
+ valueTypePrefix
+ isValueTypeValidSeq
+
+
+
+
+
+
+
+
+ Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'
+ isNameValidText == true && namePrefix == "pdfaProperty"
+
+ Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty"
+
+ Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+ Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'
+ isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty"
+
+ Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or has value different from external or internal (category value = %3)
+
+ categoryPrefix
+ isCategoryValidText
+ category
+
+
+
+
+
+
+ Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaProperty"
+
+ Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isTypeValidText == true && typePrefix == "pdfaType"
+
+ Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2)
+
+ typePrefix
+ isTypeValidText
+
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaType'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType"
+
+ Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+ Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isPrefixValidText == true && prefixPrefix == "pdfaType"
+
+ Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+ Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaType"
+
+ Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type Seq Field and namespace prefix 'pdfaType'
+ isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType")
+
+ Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2)
+
+ fieldPrefix
+ isFieldValidSeq
+
+
+
+
+
+
+ Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'
+ isNameValidText == true && namePrefix == "pdfaField"
+
+ Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField"
+
+ Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+ Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaField"
+
+ Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ The metadata stream shall conform to XMP Specification and well formed PDFAExtension Schema for all extensions
+ isSerializationValid
+
+ The serialization of the metadata stream does not conform to XMP Specification
+
+
+
+
+
+
+
+
+ Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, or extension schemas that comply with XMP Specification
+ isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true
+
+ A property is either not defined in XMP Specification, or is not defined in any of the extension schemas
+
+
+
+
+
+
+ Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, or extension schemas that comply with XMP Specification
+ isValueTypeCorrect == true
+
+ XMP property does not correspond to type %1
+
+ predefinedType
+
+
+
+
+
+
+ The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema
+ Identification_size == 1
+
+ The document metadata stream doesn't contains PDF/A Identification Schema
+
+
+
+
+
+
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+ part == 1
+
+ The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1 conforming file
+
+ part
+
+
+
+
+
+
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A
+ conformance == "A"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1a conforming file
+
+ conformance
+
+
+
+
+
+
+ Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ partPrefix == null || partPrefix == "pdfaid"
+
+ Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+ Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ conformancePrefix == null || conformancePrefix == "pdfaid"
+
+ Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ conformancePrefix
+
+
+
+
+
+
+ Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ amdPrefix == null || amdPrefix == "pdfaid"
+
+ Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ amdPrefix
+
+
+
+
+
+
+ The document catalog dictionary shall include a MarkInfo dictionary with a Marked entry in it, whose value shall be true
+ Marked == true
+
+ MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or is not present in the MarkInfo dictionary (MarkInfo = %1, Marked = %2)
+
+ MarkInfo
+ Marked
+
+
+
+
+
+
+
+
+ The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document catalog dictionary, as described in PDF Reference 9.6
+ StructTreeRoot_size == 1
+
+ StructTreeRoot entry is not present in the document catalog
+
+
+
+
+
+
+
+
+ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root
+ isNotMappedToStandardType == false
+
+ Non-standard structure type %1 is not mapped to a standard type
+
+ valueS
+
+
+
+
+
+
+
+
+ A circular mapping shall not exist
+ circularMappingExist != true
+
+ A circular mapping exists for %1 structure type
+
+ valueS
+
+
+
+
+
+
+
+
+ If the Lang entry is present in the document catalog dictionary or in a structure element dictionary or property list, its value shall be a language identifier as defined by RFC 1766, Tags for the Identification of Languages, as described in PDF Reference 9.8.1
+ unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z]{1,8})*$/.test(unicodeValue)
+
+ Value %1 of the Lang entry is not a Language-Tag
+
+ unicodeValue
+
+
+
+
+
+
+
+
+
+ The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
+ NeedAppearances == null || NeedAppearances == false
+
+ The interactive form dictionary contains the NeedAppearances flag with value true
+
+
+
+
+
+
+ Every form field shall have an appearance dictionary associated with the field's data
+ AP != null
+
+ Form field does not have an appearance dictionary associated with the field's data
+
+
+
+
+
+
+
+ null
+ S == "GTS_PDFA1" ? colorSpace : gOutputCS
+
+
+
diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml
new file mode 100644
index 00000000..897ad393
--- /dev/null
+++ b/PDF_A/PDFA-1B.xml
@@ -0,0 +1,1642 @@
+
+
+
+ PDF/A-1B validation profile
+ Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level B
+
+
+
+
+
+ The % character of the file header shall occur at byte offset 0 of the file. The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms
+ headerOffset == 0 && /%PDF-\d\.\d/.test(header)
+
+ File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-n.m
+
+ header
+ headerOffset
+
+
+
+
+
+
+
+
+ The file header line shall be immediately followed by a comment consisting of a % character followed by at least four characters, each of whose encoded byte values shall have a decimal value greater than 127
+ headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
+
+ Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4)
+
+ headerByte1
+ headerByte2
+ headerByte3
+ headerByte4
+
+
+
+
+
+
+ The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2
+ (isLinearized == true) ? (firstPageID != null) : (lastID != null)
+
+ Missing ID in the document trailer
+
+
+
+
+
+
+ The keyword Encrypt shall not be used in the trailer dictionary
+ isEncrypted != true
+
+ Encrypt keyword is present in the trailer dictionary
+
+
+
+
+
+
+ No data shall follow the last end-of-file marker except a single optional end-of-line marker
+ postEOFDataSize == 0
+
+ %1 byte(s) of data is present after the last end-of-file marker
+
+ postEOFDataSize
+
+
+
+
+
+
+ In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary and the last trailer dictionary, the value to both instances of the ID keyword shall be identical
+ (isLinearized != true) || lastID == null || (firstPageID == lastID)
+
+ Last ID (%1) is present in the Linearized PDF and does not match the first page ID (%2)
+
+ lastIDValue
+ firstPageIDValue
+
+
+
+
+
+
+
+
+ In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h)
+ subsectionHeaderSpaceSeparated == true
+
+ Extra or missing spacings around in a subsection header of the cross reference table
+
+
+
+
+
+
+ The xref keyword and the cross reference subsection header shall be separated by a single EOL marker
+ xrefEOLMarkersComplyPDFA
+
+ Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table
+
+
+
+
+
+
+ Xref streams shall not be used
+ containsXRefStream == false
+
+ The document uses xref streams
+
+
+
+
+
+
+ Hexadecimal strings shall contain an even number of non-white-space characters
+ (isHex != true) || hexCount % 2 == 0
+
+ A hexadecimal string contains odd number (%1) of non-white-space characters
+
+ hexCount
+
+
+
+
+
+
+ All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f
+ (isHex != true) || containsOnlyHex == true
+
+ Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f
+
+
+
+
+
+
+ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword
+ Length == realLength
+
+ Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s))
+
+ realLength
+ Length
+
+
+
+
+
+
+ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker
+ streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true
+
+ Extra spacings or missing EOL characters around keywords 'stream' and 'endstream'
+
+
+
+
+
+
+ A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys
+ F == null && FFilter == null && FDecodeParms == null
+
+ A stream object dictionary contains %1 key(s)
+
+ keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString()
+
+
+
+
+
+
+
+
+ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker
+ spacingCompliesPDFA
+
+ Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj'
+
+
+
+
+
+
+ The LZWDecode filter shall not be permitted
+ internalRepresentation != "LZWDecode"
+
+ Unknown or not permitted Stream filter %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+ The LZWDecode filter shall not be permitted
+ internalRepresentation != "LZWDecode" && internalRepresentation != "LZW"
+
+ LZW compression is used in the inline image
+
+
+
+
+
+
+ A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key
+ containsEF == false
+
+ A file specification dictionary contains the EF key
+
+
+
+
+
+
+
+
+ A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key
+ containsEmbeddedFiles == false
+
+ The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary)
+
+
+
+
+
+
+
+
+ Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648
+ (intValue <= 2147483647) && (intValue >= -2147483648)
+
+ Integer value %1 out of range
+
+ intValue
+
+
+
+
+
+
+
+
+ Absolute real value must be less than or equal to 32767.0
+ (realValue >= -32767.0) && (realValue <= 32767.0)
+
+ Real value %1 out of range
+
+ realValue
+
+
+
+
+
+
+
+
+ Maximum length of a string (in bytes) is 65535
+ value.length() < 65536
+
+ String length (%1) exceeded 65535
+
+ value.length()
+
+
+
+
+
+
+
+
+ Maximum length of a name (in bytes) is 127
+ internalRepresentation.length() <= 127
+
+ Name length (%1) exceeded 127
+
+ internalRepresentation.length()
+
+
+
+
+
+
+
+
+ Maximum capacity of an array (in elements) is 8191
+ size <= 8191
+
+ Array capacity (%1) exceeded 8191
+
+ size
+
+
+
+
+
+
+
+
+ Maximum capacity of a dictionary (in entries) is 4095
+ size <= 4095
+
+ Dictionary capacity (%1) exceeded 4095
+
+ size
+
+
+
+
+
+
+
+
+ Maximum number of indirect objects in a PDF file is 8,388,607
+ nrIndirects <= 8388607
+
+ Number of indirect objects in a PDF file (%1) exceeded 8,388,607
+
+ nrIndirects
+
+
+
+
+
+
+
+
+ Maximum depth of graphics state nesting by q and Q operators is 28
+ nestingLevel <= 28
+
+ Depth of graphics state nesting of q/Q operators (%1) exceeded 28
+
+ nestingLevel
+
+
+
+
+
+
+
+
+ Maximum number of DeviceN components is 8
+ nrComponents <= 8
+
+ Number of DeviceN components (%1) exceeded 8
+
+ nrComponents
+
+
+
+
+
+
+
+
+ Maximum value of a CID (character identifier) is 65,535
+ maximalCID <= 65535
+
+ Value of a CID (%1) exceeded 65,535
+
+ maximalCID
+
+
+
+
+
+
+
+
+ The document catalog dictionary shall not contain a key with the name OCProperties
+ isOptionalContentPresent == false
+
+ The document catalog dictionary contains the OCProperties entry
+
+
+
+
+
+
+ A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key
+ (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0
+
+ The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information
+
+
+
+
+
+
+
+
+ If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream
+ sameOutputProfileIndirect == true
+
+ File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1)
+
+ outputProfileIndirects
+
+
+
+
+
+
+ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5
+ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0
+
+ The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.4 requirements
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. As of PDF 1.4, N must be 1, 3, or 4
+ N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK"))
+
+ The N entry (value %1) in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile (color space %2)
+
+ N
+ colorSpace
+
+
+
+
+
+
+
+
+ DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space
+ gOutputCS != null && gOutputCS == "RGB "
+
+ DeviceRGB colour space is used without RGB output intent profile
+
+
+
+
+
+
+ DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space
+ gOutputCS != null && gOutputCS == "CMYK"
+
+ DeviceCMYK colour space is used without CMYK output intent profile
+
+
+
+
+
+
+ If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2
+ gOutputCS != null
+
+ DeviceGray colour space is used without output intent profile
+
+
+
+
+
+
+ An Image dictionary shall not contain the Alternates key
+ containsAlternates == false
+
+ Alternates key is present in the Image dictionary
+
+
+
+
+
+
+ An XObject dictionary (Image or Form) shall not contain the OPI key
+ containsOPI == false
+
+ OPI key is present in the XObject dictionary
+
+
+
+
+
+
+ If an Image dictionary contains the Interpolate key, its value shall be false
+ Interpolate == false
+
+ The value of the Interpolate key in the Image dictionary is true
+
+
+
+
+
+
+ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4 or 8
+ BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8
+
+ The value of the BitsPerComponent key in the Image dictionary is %1
+
+ BitsPerComponent
+
+
+
+
+
+
+
+
+ A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key
+ (Subtype2 == null || Subtype2 != "PS") && containsPS == false
+
+ The form XObject dictionary contains a PS key or Subtype2 key with value PS
+
+
+
+
+
+
+ A conforming file shall not contain any reference XObjects
+ containsRef == false
+
+ The document contains a reference XObject (Ref key in the form XObject dictionary)
+
+
+
+
+
+
+ A conforming file shall not contain any PostScript XObjects
+ Subtype != "PS"
+
+ The document contains a PostScript XObject
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR key
+ TR == null
+
+ An ExtGState dictionary contains the TR key
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR2 key with a value other than Default
+ TR2 == null || TR2 == "Default"
+
+ An ExtGState dictionary contains the TR2 key with value %1 other than Default
+
+ TR2
+
+
+
+
+
+
+ Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation
+ internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation"
+
+ A rendering intent with non-standard value %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+ A content stream shall not contain any operators not defined in PDF Reference even if such operators are bracketed by the BX/EX compatibility operators
+ false
+
+ A content stream contains operator %1 not defined in PDF Reference
+
+ name
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary
+ Type == "Font"
+
+ A Font dictionary has value %1 of Type entry instead of Font
+
+ Type
+
+
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts
+ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
+
+ Invalid Subtype entry in font dictionary with value %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. BaseFont - name - (Required) The PostScript name of the font
+ Subtype == "Type3" || fontName != null
+
+ A BaseFont entry is missing or has invalid type
+
+
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array
+ isStandard == true || FirstChar != null
+
+ A non-standard simple font dictionary has missing or invalid FirstChar entry
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array
+ isStandard == true || LastChar != null
+
+ A non-standard simple font dictionary has missing or invalid LastChar entry
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths
+ isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
+
+ Widths array is missing or has invalid size %1 instead of %2
+
+ Widths_size
+ LastChar - FirstChar + 1
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF) and CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF)
+ fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C"
+
+ Unsupported font file format %1 of the embedded font
+
+ fontFileSubtype
+
+
+
+
+
+
+
+
+
+ For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry)
+
+ Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+
+
+
+
+
+
+
+
+
+ For all Type 2 CIDFonts that are used for rendering, the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in PDF Reference Table 5.13
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || renderingMode == 3
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+
+ All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4
+ CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1
+
+ A CMap is different from "Identity-H" or "Identity-V" and is not embedded
+
+
+
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+ The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+ Embedded font programs shall define all font glyphs referenced for rendering with conforming file
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+ For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18
+ fontName.search(/[A-Z]{6}\+/) != 0 || (CharSet != null && charSetListsAllGlyphs == true)
+
+ A Type1 font subset does not define CharSet entry in its Descriptor dictionary
+
+
+
+
+
+
+
+
+ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20
+ fontName.search(/[A-Z]{6}\+/) != 0 || (containsCIDSet == true && cidSetListsAllGlyphs == true)
+
+ A CIDSet entry in the Font descriptor is missing or does not correctly identify all glyphs present in the embedded font subset and used for rendering
+
+
+
+
+
+
+
+
+ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+
+
+ All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && containsDifferences == false)
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2)
+
+ Encoding
+ containsDifferences
+
+
+
+
+
+
+
+
+ All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+
+
+ Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding
+ isSymbolic == false || nrCmaps == 1
+
+ The embedded font program for a symbolic TrueType font contains %1 cmap subtables
+
+ nrCmaps
+
+
+
+
+
+
+
+
+ If an SMask key appears in an ExtGState dictionary, its value shall be None
+ SMask == null || SMask == "None"
+
+ An ExtGState contains SMask key with value %1 instead of None
+
+ SMask
+
+
+
+
+
+
+ An XObject dictionary shall not contain the SMask key
+ containsSMask == false
+
+ An XObject contains an SMask key
+
+
+
+
+
+
+
+
+ A Group object with an S key with a value of Transparency shall not be included in a form XObject. A Group object with an S key with a value of Transparency shall not be included in a page dictionary
+ S != "Transparency"
+
+ A transparency group is present in a form XObject or page dictionary
+
+
+
+
+
+
+
+
+ The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible
+ BM == null || BM == "Normal" || BM == "Compatible"
+
+ An ExtGState dictionary contains the BM key (blend mode) with value %1 that is neither Normal or Compatible
+
+ BM
+
+
+
+
+
+
+ The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0
+ CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001
+
+ An ExtGState dictionary contains the CA key (stroke alpha) with value %1 other than 1.0
+
+ CA
+
+
+
+
+
+
+ The following keys, if present in an ExtGState object, shall have the values shown: ca - 1.0
+ ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001
+
+ An ExtGState dictionary contains the ca key (fill alpha) with value %1 other than 1.0
+
+ ca
+
+
+
+
+
+
+ Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, Sound and Movie types shall not be permitted
+ Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet"
+
+ Unknown or not permitted Annotation type %1
+
+ Subtype
+
+
+
+
+
+
+
+
+ An annotation dictionary shall not contain the CA key with a value other than 1.0
+ CA == null || CA == 1.0
+
+ An annotation dictionary contains the CA key with value %1 instead of 1.0
+
+ CA
+
+
+
+
+
+
+ An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, Invisible and NoView flag bits shall be set to 0
+ F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0
+
+ Annotation flags are either missing or set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5)
+
+ F
+ F != null ? (F & 4) >> 2 : null
+ F != null ? (F & 2) >> 1 : null
+ F != null ? (F & 1) : null
+ F != null ? (F & 32) >> 5 : null
+
+
+
+
+
+
+ An annotation dictionary shall not contain the C array or the IC array unless the colour space of the DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB
+ (containsC == false && containsIC == false) || gOutputCS == "RGB "
+
+ Annotation's color (C present = %1) or interior color (IC present = %2) is used without specifying RGB-based destination output profile
+
+ containsC
+ containsIC
+
+
+
+
+
+
+ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key
+ AP == null || AP == "N"
+
+ Annotation's appearance dictionary contains entries %1 other than N
+
+ AP.split('&').filter(elem => elem != 'N').toString()
+
+
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary
+ AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0)
+
+ An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary
+
+ N_type
+
+
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
+ AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream"
+
+ An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream
+
+ Subtype
+ FT
+
+
+
+
+
+
+
+
+ The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2)
+ S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"
+
+ Unknown or not permitted Action type %1
+
+ S
+
+
+
+
+
+
+
+
+ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
+ N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
+
+ Unknown or not permitted named action %1
+
+ N
+
+
+
+
+
+
+
+
+ Interactive form fields shall not perform actions of any type
+ containsA == false
+
+ Interactive form field contains an action object ('A' key)
+
+
+
+
+
+
+ A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ A Widget annotation contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+ A Field dictionary shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ A Field dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+ The document catalog dictionary shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ The document catalog dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+ The document catalog dictionary of a conforming file shall contain the Metadata key
+ metadata_size == 1
+
+ The document catalog dictionary doesn't contain metadata key
+
+
+
+
+
+
+ Metadata object stream dictionaries shall not contain the Filter key
+ Filter == null
+
+ The metadata object stream dictionary contains the Filter key
+
+
+
+
+
+
+ The value of CreationDate entry from the document information dictionary, if present, and its analogous XMP property "xmp:CreateDate" shall be equivalent
+ doCreationDatesMatch != false
+
+ The value of CreationDate entry from the document Info dictionary and its matching XMP property "xmp:CreateDate" are not equivalent (Info /CreationDate = %1, XMP xmp:CreateDate = %2)
+
+ CreationDate
+ XMPCreateDate
+
+
+
+
+
+
+
+
+ The value of Title entry from the document information dictionary, if present, and its analogous XMP property "dc:title['x-default']" shall be equivalent
+ Title == null || Title == XMPTitle
+
+ The value of Title entry from the document Info dictionary and its matching XMP property "dc:title['x-default']" are not equivalent (Info /Title = %1, XMP dc:title['x-default'] = %2)
+
+ Title
+ XMPTitle
+
+
+
+
+
+
+
+
+ The value of Author entry from the document information dictionary, if present, and its analogous XMP property "dc:creator" shall be equivalent. dc:creator shall contain exactly one entry
+ Author == null || (Author == XMPCreator && XMPCreatorSize == 1)
+
+ The value of Author entry from the document Info dictionary and its matching XMP property "dc:creator" are not equivalent (Info /Author = %1, XMP dc:creator = %2)
+
+ Author
+ XMPCreator
+
+
+
+
+
+
+
+
+ The value of Subject entry from the document information dictionary, if present, and its analogous XMP property "dc:description['x-default']" shall be equivalent
+ Subject == null || Subject == XMPDescription
+
+ The value of Subject entry from the document Info dictionary and its matching XMP property "dc:description['x-default']" are not equivalent (Info /Subject = %1, XMP dc:description['x-default'] = %2)
+
+ Subject
+ XMPDescription
+
+
+
+
+
+
+
+
+ The value of Keywords entry from the document information dictionary, if present, and its analogous XMP property "pdf:Keywords" shall be equivalent
+ Keywords == null || Keywords == XMPKeywords
+
+ The value of Keywords entry from the document Info dictionary and its matching XMP property "pdf:Keywords" are not equivalent (Info /Keywords = %1, XMP pdf:Keywords = %2)
+
+ Keywords
+ XMPKeywords
+
+
+
+
+
+
+
+
+ The value of Creator entry from the document information dictionary, if present, and its analogous XMP property "xmp:CreatorTool" shall be equivalent
+ Creator == null || Creator == XMPCreatorTool
+
+ The value of Creator entry from the document Info dictionary and its matching XMP property "xmp:CreatorTool" are not equivalent (Info /Creator = %1, XMP xmp:CreatorTool = %2)
+
+ Creator
+ XMPCreatorTool
+
+
+
+
+
+
+
+
+ The value of Producer entry from the document information dictionary, if present, and its analogous XMP property "pdf:Producer" shall be equivalent
+ Producer == null || Producer == XMPProducer
+
+ The value of Producer entry from the document Info dictionary and its matching XMP property "pdf:Producer" are not equivalent (Info /Producer = %1, XMP pdf:Producer = %2)
+
+ Producer
+ XMPProducer
+
+
+
+
+
+
+
+
+ The value of ModDate entry from the document information dictionary, if present, and its analogous XMP property "xmp:ModifyDate" shall be equivalent
+ doModDatesMatch != false
+
+ The value of ModDate entry from the document Info dictionary and its matching XMP property "xmp:ModifyDate" are not equivalent (Info /ModDate = %1, XMP xmp:ModifyDate = %2)
+
+ ModDate
+ XMPModifyDate
+
+
+
+
+
+
+
+
+ The bytes attribute shall not be used in the header of an XMP packet
+ bytes == null
+
+ The XMP Package contains bytes attribute
+
+
+
+
+
+
+ The encoding attribute shall not be used in the header of an XMP packet
+ encoding == null
+
+ The XMP Package contains encoding attribute
+
+
+
+
+
+
+ Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause
+ containsUndefinedFields == false
+
+ An extension schema object contains field(s) %1 not defined by the specification
+
+ undefinedFields
+
+
+
+
+
+
+
+
+ The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas
+ isValidBag == true && prefix == "pdfaExtension"
+
+ The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix 'pdfaExtension' (prefix = %2)
+
+ isValidBag
+ prefix
+
+
+
+
+
+
+
+
+ Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema'
+ isSchemaValidText == true && schemaPrefix == "pdfaSchema"
+
+ Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2)
+
+ schemaPrefix
+ isSchemaValidText
+
+
+
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaSchema'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema"
+
+ Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+
+
+ Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema'
+ isPrefixValidText == true && prefixPrefix == "pdfaSchema"
+
+ Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+
+
+ Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq Property and namespace prefix 'pdfaSchema'
+ isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema")
+
+ Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2)
+
+ propertyPrefix
+ isPropertyValidSeq
+
+
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq ValueType and namespace prefix 'pdfaSchema'
+ isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema")
+
+ Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2)
+
+ valueTypePrefix
+ isValueTypeValidSeq
+
+
+
+
+
+
+
+
+ Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'
+ isNameValidText == true && namePrefix == "pdfaProperty"
+
+ Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty"
+
+ Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+ Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'
+ isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty"
+
+ Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or has value different from external or internal (category value = %3)
+
+ categoryPrefix
+ isCategoryValidText
+ category
+
+
+
+
+
+
+ Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaProperty"
+
+ Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isTypeValidText == true && typePrefix == "pdfaType"
+
+ Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2)
+
+ typePrefix
+ isTypeValidText
+
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaType'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType"
+
+ Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+ Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isPrefixValidText == true && prefixPrefix == "pdfaType"
+
+ Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+ Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaType"
+
+ Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type Seq Field and namespace prefix 'pdfaType'
+ isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType")
+
+ Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2)
+
+ fieldPrefix
+ isFieldValidSeq
+
+
+
+
+
+
+ Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'
+ isNameValidText == true && namePrefix == "pdfaField"
+
+ Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField"
+
+ Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+ Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaField"
+
+ Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ The metadata stream shall conform to XMP Specification and well formed PDFAExtension Schema for all extensions
+ isSerializationValid
+
+ The serialization of the metadata stream does not conform to XMP Specification
+
+
+
+
+
+
+
+
+ Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, or extension schemas that comply with XMP Specification
+ isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true
+
+ A property is either not defined in XMP Specification, or is not defined in any of the extension schemas
+
+
+
+
+
+
+ Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, or extension schemas that comply with XMP Specification
+ isValueTypeCorrect == true
+
+ XMP property does not correspond to type %1
+
+ predefinedType
+
+
+
+
+
+
+ The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema
+ Identification_size == 1
+
+ The document metadata stream doesn't contains PDF/A Identification Schema
+
+
+
+
+
+
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+ part == 1
+
+ The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1 conforming file
+
+ part
+
+
+
+
+
+
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of "pdfaid:conformance" as B
+ conformance == "B" || conformance == "A"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file
+
+ conformance
+
+
+
+
+
+
+ Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ partPrefix == null || partPrefix == "pdfaid"
+
+ Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+ Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ conformancePrefix == null || conformancePrefix == "pdfaid"
+
+ Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ conformancePrefix
+
+
+
+
+
+
+ Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ amdPrefix == null || amdPrefix == "pdfaid"
+
+ Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ amdPrefix
+
+
+
+
+
+
+ The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
+ NeedAppearances == null || NeedAppearances == false
+
+ The interactive form dictionary contains the NeedAppearances flag with value true
+
+
+
+
+
+
+ Every form field shall have an appearance dictionary associated with the field's data
+ AP != null
+
+ Form field does not have an appearance dictionary associated with the field's data
+
+
+
+
+
+
+
+ null
+ S == "GTS_PDFA1" ? colorSpace : gOutputCS
+
+
+
diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml
new file mode 100644
index 00000000..ec953699
--- /dev/null
+++ b/PDF_A/PDFA-2A.xml
@@ -0,0 +1,1880 @@
+
+
+
+ PDF/A-2A validation profile
+ Validation rules against ISO 19005-2:2011, Level A
+
+
+
+
+
+ The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h)
+ headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header)
+
+ File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, where 'n' is a single digit number between 0 and 7
+
+ header
+ headerOffset
+
+
+
+
+
+
+ The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127
+ headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
+
+ Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4)
+
+ headerByte1
+ headerByte2
+ headerByte3
+ headerByte4
+
+
+
+
+
+
+ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4
+ lastID != null && lastID.length() > 0
+
+ Missing or empty ID in the document trailer
+
+
+
+
+
+
+
+
+ The keyword Encrypt shall not be used in the trailer dictionary
+ isEncrypted != true
+
+ Encrypt keyword is present in the trailer dictionary
+
+
+
+
+
+
+ No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5
+ postEOFDataSize == 0
+
+ %1 byte(s) of data is present after the last end-of-file marker
+
+ postEOFDataSize
+
+
+
+
+
+
+
+
+ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker
+ xrefEOLMarkersComplyPDFA
+
+ Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table
+
+
+
+
+
+
+ Hexadecimal strings shall contain an even number of non-white-space characters
+ (isHex != true) || hexCount % 2 == 0
+
+ A hexadecimal string contains odd number (%1) of non-white-space characters
+
+ hexCount
+
+
+
+
+
+
+ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)
+ (isHex != true) || containsOnlyHex == true
+
+ Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f
+
+
+
+
+
+
+ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword
+ Length == realLength
+
+ Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s))
+
+ realLength
+ Length
+
+
+
+
+
+
+ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker
+ streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true
+
+ Extra spacings or missing EOL characters around keywords 'stream' and 'endstream'
+
+
+
+
+
+
+ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys
+ F == null && FFilter == null && FDecodeParms == null
+
+ A stream object dictionary contains %1 key(s)
+
+ keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString()
+
+
+
+
+
+
+ All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be used
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || (internalRepresentation == "Crypt" && decodeParms == "Identity")
+
+ Unknown or not permitted Stream filter %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+ Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences
+ isValidUtf8 == true
+
+ The name value %1 does not represent a correct UTF-8 character sequence
+
+ unicodeValue
+
+
+
+
+
+
+
+
+ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker
+ spacingCompliesPDFA
+
+ Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj'
+
+
+
+
+
+
+ The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || internalRepresentation == "CCF" || internalRepresentation == "DCT"
+
+ Inline image uses not permitted or unknown filter %1
+
+ internalRepresentation
+
+
+
+
+
+
+ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258)
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == ''
+
+ The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP
+
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString()
+
+
+
+
+
+
+
+
+ If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue
+ permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').length == 0
+
+ The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary
+
+ entries.split('&').filter(elem => elem == 'DigestLocation' ||
+ elem == 'DigestMethod' || elem == 'DigestValue').toString()
+
+
+
+
+
+
+
+
+ A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648
+ (intValue <= 2147483647) && (intValue >= -2147483648)
+
+ Integer value %1 out of range
+
+ intValue
+
+
+
+
+
+
+ A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38
+ (realValue >= -3.403e+38) && (realValue <= 3.403e+38)
+
+ Real value %1 out of range
+
+ realValue
+
+
+
+
+
+
+ A conforming file shall not contain any string longer than 32767 bytes
+ value.length() < 32768
+
+ String length (%1) exceeded 32767
+
+ value.length()
+
+
+
+
+
+
+ A conforming file shall not contain any name longer than 127 bytes
+ internalRepresentation.length() <= 127
+
+ Name length (%1) exceeded 127
+
+ internalRepresentation.length()
+
+
+
+
+
+
+ A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38)
+ realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38)
+
+ Non-zero real value %1 is too close to 0.0
+
+ realValue
+
+
+
+
+
+
+ A conforming file shall not contain more than 8388607 indirect objects
+ nrIndirects <= 8388607
+
+ Number of indirect objects in a PDF file (%1) exceeded 8,388,607
+
+ nrIndirects
+
+
+
+
+
+
+ A conforming file shall not nest q/Q pairs by more than 28 nesting levels
+ nestingLevel <= 28
+
+ Depth of graphics state nesting of q/Q operators (%1) exceeded 28
+
+ nestingLevel
+
+
+
+
+
+
+ A conforming file shall not contain a DeviceN colour space with more than 32 colourants
+ nrComponents <= 32
+
+ Number of DeviceN components (%1) exceeded 32
+
+ nrComponents
+
+
+
+
+
+
+ A conforming file shall not contain a CID value greater than 65535
+ maximalCID <= 65535
+
+ Value of a CID (%1) exceeded 65,535
+
+ maximalCID
+
+
+
+
+
+
+ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction
+ Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400
+
+ One of the page boundaries is out of range (valid range: 3 - 14400, height = %1, width = %2)
+
+ Math.abs(top - bottom)
+ Math.abs(right - left)
+
+
+
+
+
+
+ Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators
+ false
+
+ A content stream contains operator %1 not defined in ISO 32000-1
+
+ name
+
+
+
+
+
+
+ A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3
+ inheritedResourceNames == ''
+
+ A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary
+
+ inheritedResourceNames
+
+
+
+
+
+
+
+
+ The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK"
+ (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0
+
+ The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3)
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream
+ sameOutputProfileIndirect == true
+
+ File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1)
+
+ outputProfileIndirects
+
+
+
+
+
+
+ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent
+ S != 'GTS_PDFX' || containsDestOutputProfileRef == false
+
+ The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef
+
+
+
+
+
+
+
+
+ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1
+ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0
+
+ The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both
+ overprintFlag == false || OPM == 0
+
+ Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting
+
+ OPM
+
+
+
+
+
+
+
+
+ DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile
+ gOutputCS != null && gOutputCS == "RGB "
+
+ DeviceRGB colour space is used without RGB output intent profile
+
+
+
+
+
+
+ DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile
+ gOutputCS != null && gOutputCS == "CMYK"
+
+ DeviceCMYK colour space is used without CMYK output intent profile
+
+
+
+
+
+
+ DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present
+ gOutputCS != null
+
+ DeviceGray colour space is used without output intent profile
+
+
+
+
+
+
+ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present
+ areColorantsPresent == true
+
+ A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary
+
+
+
+
+
+
+
+
+ All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored
+ areTintAndAlternateConsistent == true
+
+ Several occurrences of a Separation colour space with the same name are not consistent
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR key
+ TR == null
+
+ An ExtGState dictionary contains the TR key
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR2 key with a value other than Default
+ TR2 == null || TR2 == "Default"
+
+ An ExtGState dictionary contains the TR2 key with value %1 other than Default
+
+ TR2
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the HTP key
+ containsHTP == false
+
+ An ExtGState dictionary contains the HTP key
+
+
+
+
+
+
+ All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key
+ HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5)
+
+ A Halftone has type %1 instead of 1 or 5
+
+ HalftoneType
+
+
+
+
+
+
+ Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key
+ HalftoneName == null
+
+ A Halftone dictionary contains the HalftoneName key
+
+
+
+
+
+
+ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1
+ colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null)
+
+ Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants
+
+
+
+
+
+
+
+
+ Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation
+ internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation"
+
+ A rendering intent with non-standard value %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+ An Image dictionary shall not contain the Alternates key
+ containsAlternates == false
+
+ Alternates key is present in the Image dictionary
+
+
+
+
+
+
+ An Image dictionary shall not contain the OPI key
+ containsOPI == false
+
+ OPI key is present in the Image dictionary
+
+
+
+
+
+
+ If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false
+ Interpolate == false
+
+ The value of the Interpolate key in the Image dictionary is true
+
+
+
+
+
+
+ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16
+ BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 || BitsPerComponent == 16
+
+ The value of the BitsPerComponent key in the Image dictionary is %1
+
+ BitsPerComponent
+
+
+
+
+
+
+
+
+ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4
+ nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4
+
+ JPEG2000 image has %1 colour channels that is neither 1, 3 or 4
+
+ nrColorChannels
+
+
+
+
+
+
+ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field
+ hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1
+
+ The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field)
+
+ nrColorSpacesWithApproxField
+
+
+
+
+
+
+ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications
+ hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3
+
+ Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03
+
+ colrMethod
+
+
+
+
+
+
+ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used
+ hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19
+
+ JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A
+
+
+
+
+
+
+ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth
+ bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38)
+
+ JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2)
+
+ bpccBoxPresent
+ bitDepth
+
+
+
+
+
+
+ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key
+ (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false
+
+ The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key
+
+
+
+
+
+
+ A conforming file shall not contain any reference XObjects
+ containsRef == false
+
+ The document contains a reference XObject (Ref key in the form XObject dictionary)
+
+
+
+
+
+
+ A conforming file shall not contain any PostScript XObjects
+ Subtype != "PS"
+
+ The document contains a PostScript XObject
+
+
+
+
+
+
+ Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary
+ internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity"
+
+ The document uses the blend mode %1 not defined in ISO 32000-1:2008
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space
+ gOutputCS != null || containsGroupCS == true || containsTransparency == false
+
+ The page contains transparent objects with no blending colour space defined
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary
+ Type == "Font"
+
+ A Font dictionary has value %1 of Type entry instead of Font
+
+ Type
+
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts
+ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
+
+ Invalid Subtype entry in font dictionary with value %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font
+ Subtype == "Type3" || fontName != null
+
+ A BaseFont entry is missing or has invalid type
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array
+ isStandard == true || FirstChar != null
+
+ A non-standard simple font dictionary has missing or invalid FirstChar entry
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array
+ isStandard == true || LastChar != null
+
+ A non-standard simple font dictionary has missing or invalid LastChar entry
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths
+ isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
+
+ Widths array is missing or has invalid size %1 instead of %2
+
+ Widths_size
+ LastChar - FirstChar + 1
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4
+ fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType"
+
+ Unsupported font file format %1 of the embedded font
+
+ fontFileSubtype
+
+
+
+
+
+
+
+
+
+
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary shall have the following relationship: - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement)
+
+ CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+ CIDFontSupplement
+ CMapSupplement
+
+
+
+
+
+
+ ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-1:2008, 9.7.4, Table 117
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+ All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1
+
+ A non-standard CMap %1 is not embedded
+
+ CMapName
+
+
+
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V"
+
+ A CMap references another non-standard CMap %1
+
+ CMapName
+
+
+
+
+
+
+
+
+ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true
+
+ A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program
+
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true
+
+ A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset
+
+
+
+
+
+
+ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out
+ isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0)
+
+ The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries
+
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the dictionary that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic TrueType fonts shall not define a Differences array unless all of the glyph names in the Differences array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft Unicode (3,1 – Platform ID = 3, Encoding ID = 1) encoding in the 'cmap' table
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+ The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding
+ isSymbolic == false || nrCmaps == 1 || cmap30Present == true
+
+ The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0)
+
+ nrCmaps
+
+
+
+
+
+
+ The Font dictionary of all fonts shall define the map of all used character codes to Unicode values, either via a ToUnicode entry, or other mechanisms as defined in ISO 19005-2, 6.2.11.7.2
+ toUnicode != null
+
+ The glyph can not be mapped to Unicode
+
+
+
+
+
+
+
+
+ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE
+ toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1)
+
+ The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard
+
+
+
+
+
+
+ For any character, regardless of its rendering mode, that is mapped to a code or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a character is a part
+ unicodePUA == false || actualTextPresent == true
+
+ The character has Unicode value from Private Use Area, and no replacement text present
+
+
+
+
+
+
+
+
+ A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators, regardless of text rendering mode, in any content stream
+ name != ".notdef"
+
+ The document contains a reference to the .notdef glyph
+
+
+
+
+
+
+ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted
+ Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact"
+
+ Unknown or not permitted Annotation type %1
+
+ Subtype
+
+
+
+
+
+
+
+
+ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key
+ Subtype == "Popup" || F != null
+
+ A dictionary of %1 annotation does not contain F key
+
+ Subtype
+
+
+
+
+
+
+ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0
+ F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0)
+
+ Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6)
+
+ F
+ (F & 4) >> 2
+ (F & 2) >> 1
+ (F & 1)
+ (F & 32) >> 5
+ (F & 256) >> 8
+
+
+
+
+
+
+ Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link
+ (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null
+
+ An annotation does not contain an appearance dictionary
+
+
+
+
+
+
+ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key
+ AP == null || AP == "N"
+
+ Annotation's appearance dictionary contains entries %1 other than N
+
+ AP.split('&').filter(elem => elem != 'N').toString()
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary
+ AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0)
+
+ An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary
+
+ N_type
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
+ AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream"
+
+ An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream
+
+ Subtype
+ FT
+
+
+
+
+
+
+ A Widget annotation dictionary shall not contain the A or AA keys
+ containsA == false && containsAA == false
+
+ A Widget annotation contains %1 key(s)
+
+ entries.split('&').filter(elem => elem == 'A' || elem == 'AA').toString()
+
+
+
+
+
+
+ A Field dictionary shall not contain the A or AA keys
+ containsAA == false
+
+ A Form field dictionary contains the AA entry
+
+
+
+
+
+
+ The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
+ NeedAppearances == null || NeedAppearances == false
+
+ The interactive form dictionary contains the NeedAppearances flag with value true
+
+
+
+
+
+
+ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key
+ containsXFA == false
+
+ The interactive form dictionary contains the XFA key
+
+
+
+
+
+
+ A document's Catalog shall not contain the NeedsRendering key
+ NeedsRendering == false
+
+ A document's Catalog contains NeedsRendering flag set to true
+
+
+
+
+
+
+ When computing the digest for the file, it shall be computed over the entire file, including the signature dictionary but excluding the PDF Signature itself
+ doesByteRangeCoverEntireDocument == true
+
+ ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself)
+
+
+
+
+
+
+
+
+
+ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, it shall include the signer's X.509 signing certificate
+ signingCertificatePresent == true
+
+ The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate
+
+
+
+
+
+
+
+
+
+ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature
+ SignerInfoCount == 1
+
+ The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 signer(s) in the PDF Signature instead of one
+
+ SignerInfoCount
+
+
+
+
+
+
+
+
+
+ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted
+ S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"
+
+ Unknown or not permitted Action type %1
+
+ S
+
+
+
+
+
+
+
+
+ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
+ N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
+
+ Unknown or not permitted named action %1
+
+ N
+
+
+
+
+
+
+
+
+ The document's Catalog shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ The document catalog dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+ The Page dictionary shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ The Page dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+ The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2
+ metadata_size == 1
+
+ The document catalog dictionary doesn't contain metadata key
+
+
+
+
+
+
+
+
+ The bytes attribute shall not be used in the header of an XMP packet
+ bytes == null
+
+ The XMP Package contains bytes attribute
+
+
+
+
+
+
+ The encoding attribute shall not be used in the header of an XMP packet
+ encoding == null
+
+ The XMP Package contains encoding attribute
+
+
+
+
+
+
+ All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised)
+ isSerializationValid
+
+ A metadata stream is serialized incorrectly and can not be parsed
+
+
+
+
+
+
+
+
+
+
+ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8
+ actualEncoding == "UTF-8"
+
+ The XMP package uses encoding %1 different from UTF-8
+
+ actualEncoding
+
+
+
+
+
+
+
+
+ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2
+ isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true
+
+ XMP property is either not predefined, or is not defined in any XMP extension schema
+
+
+
+
+
+
+ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2
+ isValueTypeCorrect == true
+
+ XMP property does not correspond to type %1
+
+ predefinedType
+
+
+
+
+
+
+ Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema
+ containsUndefinedFields == false
+
+ An extension schema object contains field(s) %1 not defined by the specification
+
+ undefinedFields
+
+
+
+
+
+
+ The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas
+ isValidBag == true && prefix == "pdfaExtension"
+
+ The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix 'pdfaExtension' (prefix = %2)
+
+ isValidBag
+ prefix
+
+
+
+
+
+
+ Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema'
+ isSchemaValidText == true && schemaPrefix == "pdfaSchema"
+
+ Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2)
+
+ schemaPrefix
+ isSchemaValidText
+
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaSchema'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema"
+
+ Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+ Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema'
+ isPrefixValidText == true && prefixPrefix == "pdfaSchema"
+
+ Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+ Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq Property and namespace prefix 'pdfaSchema'
+ isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema")
+
+ Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2)
+
+ propertyPrefix
+ isPropertyValidSeq
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq ValueType and namespace prefix 'pdfaSchema'
+ isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema")
+
+ Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2)
+
+ valueTypePrefix
+ isValueTypeValidSeq
+
+
+
+
+
+
+ Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'
+ isNameValidText == true && namePrefix == "pdfaProperty"
+
+ Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty"
+
+ Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+ Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'
+ isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty"
+
+ Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or has value different from external or internal (category value = %3)
+
+ categoryPrefix
+ isCategoryValidText
+ category
+
+
+
+
+
+
+ Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaProperty"
+
+ Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isTypeValidText == true && typePrefix == "pdfaType"
+
+ Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2)
+
+ typePrefix
+ isTypeValidText
+
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaType'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType"
+
+ Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+ Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isPrefixValidText == true && prefixPrefix == "pdfaType"
+
+ Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+ Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaType"
+
+ Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type Seq Field and namespace prefix 'pdfaType'
+ isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType")
+
+ Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2)
+
+ fieldPrefix
+ isFieldValidSeq
+
+
+
+
+
+
+ Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'
+ isNameValidText == true && namePrefix == "pdfaField"
+
+ Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField"
+
+ Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+ Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaField"
+
+ Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema
+ Identification_size == 1
+
+ The document metadata stream doesn't contains PDF/A Identification Schema
+
+
+
+
+
+
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+ part == 2
+
+ The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file
+
+ part
+
+
+
+
+
+
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
+ conformance == "A"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-2A conforming file
+
+ conformance
+
+
+
+
+
+
+ Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ partPrefix == null || partPrefix == "pdfaid"
+
+ Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+ Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ conformancePrefix == null || conformancePrefix == "pdfaid"
+
+ Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ conformancePrefix
+
+
+
+
+
+
+ Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ amdPrefix == null || amdPrefix == "pdfaid"
+
+ Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ amdPrefix
+
+
+
+
+
+
+ Property "corr" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ corrPrefix == null || corrPrefix == "pdfaid"
+
+ Property "corr" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ corrPrefix
+
+
+
+
+
+
+ The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true
+ Marked == true
+
+ MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or is not present in the MarkInfo dictionary (MarkInfo = %1, Marked = %2)
+
+ MarkInfo
+ Marked
+
+
+
+
+
+
+
+
+ The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7
+ StructTreeRoot_size == 1
+
+ StructTreeRoot entry is not present in the document catalog
+
+
+
+
+
+
+
+
+ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root
+ isNotMappedToStandardType == false
+
+ Non-standard structure type %1 is not mapped to a standard type
+
+ valueS
+
+
+
+
+
+
+
+
+ A circular mapping shall not exist
+ circularMappingExist != true
+
+ A circular mapping exists for %1 structure type
+
+ valueS
+
+
+
+
+
+
+
+
+ Standard tags shall not be remapped to a non-standard type
+ remappedStandardType == null
+
+ The standard structure type %1 is remapped to a non-standard type
+
+ remappedStandardType
+
+
+
+
+
+
+
+
+ If the Lang entry is present in the document's Catalog dictionary or in a structure element dictionary or property list, its value shall be a language identifier as described in ISO 32000-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages
+ unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue)
+
+ Value %1 of the Lang entry is not a Language-Tag
+
+ unicodeValue
+
+
+
+
+
+
+
+
+
+ The file specification dictionary for an embedded file shall contain the F and UF keys
+ containsEF == false || (F != null && UF != null)
+
+ The file specification dictionary for an embedded file does not contain either F or UF key (F = %1, UF = %2)
+
+ F
+ UF
+
+
+
+
+
+
+ A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is compliant with either ISO 19005-1 or this part of ISO 19005
+ isValidPDFA12 == true
+
+ An embedded file does not comply to either ISO 19005-1 or ISO 19005-2
+
+
+
+
+
+
+ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key
+ Name != null && Name.length() > 0
+
+ Missing or empty Name entry of the optional content configuration dictionary
+
+
+
+
+
+
+ Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-2 file
+ hasDuplicateName == false
+
+ Optional content configuration dictionary has duplicated name %1
+
+ Name
+
+
+
+
+
+
+ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file
+ OCGsNotContainedInOrder == null
+
+ Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary
+
+ OCGsNotContainedInOrder
+
+
+
+
+
+
+ The AS key shall not appear in any optional content configuration dictionary
+ AS == null
+
+ AS key is present in the optional content configuration dictionary
+
+
+
+
+
+
+ There shall be no AlternatePresentations entry in the document's name dictionary
+ containsAlternatePresentations == false
+
+ The document's name dictionary contains the AlternatePresentations entry
+
+
+
+
+
+
+ There shall be no PresSteps entry in any Page dictionary
+ containsPresSteps == false
+
+ A Page dictionary contains the PresSteps entry
+
+
+
+
+
+
+ The document catalog shall not contain the Requirements key
+ Requirements == null
+
+ The document catalog contains the Requirements key
+
+
+
+
+
+
+
+ null
+ S == "GTS_PDFA1" ? colorSpace : gOutputCS
+
+
+
diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml
new file mode 100644
index 00000000..bdf6aa62
--- /dev/null
+++ b/PDF_A/PDFA-2B.xml
@@ -0,0 +1,1762 @@
+
+
+
+ PDF/A-2B validation profile
+ Validation rules against ISO 19005-2:2011, Level B
+
+
+
+
+
+ The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h)
+ headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header)
+
+ File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, where 'n' is a single digit number between 0 and 7
+
+ header
+ headerOffset
+
+
+
+
+
+
+ The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127
+ headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
+
+ Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4)
+
+ headerByte1
+ headerByte2
+ headerByte3
+ headerByte4
+
+
+
+
+
+
+ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4
+ lastID != null && lastID.length() > 0
+
+ Missing or empty ID in the document trailer
+
+
+
+
+
+
+
+
+ The keyword Encrypt shall not be used in the trailer dictionary
+ isEncrypted != true
+
+ Encrypt keyword is present in the trailer dictionary
+
+
+
+
+
+
+ No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5
+ postEOFDataSize == 0
+
+ %1 byte(s) of data is present after the last end-of-file marker
+
+ postEOFDataSize
+
+
+
+
+
+
+
+
+ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker
+ xrefEOLMarkersComplyPDFA
+
+ Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table
+
+
+
+
+
+
+ Hexadecimal strings shall contain an even number of non-white-space characters
+ (isHex != true) || hexCount % 2 == 0
+
+ A hexadecimal string contains odd number (%1) of non-white-space characters
+
+ hexCount
+
+
+
+
+
+
+ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)
+ (isHex != true) || containsOnlyHex == true
+
+ Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f
+
+
+
+
+
+
+ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword
+ Length == realLength
+
+ Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s))
+
+ realLength
+ Length
+
+
+
+
+
+
+ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker
+ streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true
+
+ Extra spacings or missing EOL characters around keywords 'stream' and 'endstream'
+
+
+
+
+
+
+ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys
+ F == null && FFilter == null && FDecodeParms == null
+
+ A stream object dictionary contains %1 key(s)
+
+ keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString()
+
+
+
+
+
+
+ All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be used
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || (internalRepresentation == "Crypt" && decodeParms == "Identity")
+
+ Unknown or not permitted Stream filter %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+ Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences
+ isValidUtf8 == true
+
+ The name value %1 does not represent a correct UTF-8 character sequence
+
+ unicodeValue
+
+
+
+
+
+
+
+
+ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker
+ spacingCompliesPDFA
+
+ Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj'
+
+
+
+
+
+
+ The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || internalRepresentation == "CCF" || internalRepresentation == "DCT"
+
+ Inline image uses not permitted or unknown filter %1
+
+ internalRepresentation
+
+
+
+
+
+
+ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258)
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == ''
+
+ The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP
+
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString()
+
+
+
+
+
+
+
+
+ If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue
+ permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').length == 0
+
+ The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary
+
+ entries.split('&').filter(elem => elem == 'DigestLocation' ||
+ elem == 'DigestMethod' || elem == 'DigestValue').toString()
+
+
+
+
+
+
+
+
+ A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648
+ (intValue <= 2147483647) && (intValue >= -2147483648)
+
+ Integer value %1 out of range
+
+ intValue
+
+
+
+
+
+
+ A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38
+ (realValue >= -3.403e+38) && (realValue <= 3.403e+38)
+
+ Real value %1 out of range
+
+ realValue
+
+
+
+
+
+
+ A conforming file shall not contain any string longer than 32767 bytes
+ value.length() < 32768
+
+ String length (%1) exceeded 32767
+
+ value.length()
+
+
+
+
+
+
+ A conforming file shall not contain any name longer than 127 bytes
+ internalRepresentation.length() <= 127
+
+ Name length (%1) exceeded 127
+
+ internalRepresentation.length()
+
+
+
+
+
+
+ A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38)
+ realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38)
+
+ Non-zero real value %1 is too close to 0.0
+
+ realValue
+
+
+
+
+
+
+ A conforming file shall not contain more than 8388607 indirect objects
+ nrIndirects <= 8388607
+
+ Number of indirect objects in a PDF file (%1) exceeded 8,388,607
+
+ nrIndirects
+
+
+
+
+
+
+ A conforming file shall not nest q/Q pairs by more than 28 nesting levels
+ nestingLevel <= 28
+
+ Depth of graphics state nesting of q/Q operators (%1) exceeded 28
+
+ nestingLevel
+
+
+
+
+
+
+ A conforming file shall not contain a DeviceN colour space with more than 32 colourants
+ nrComponents <= 32
+
+ Number of DeviceN components (%1) exceeded 32
+
+ nrComponents
+
+
+
+
+
+
+ A conforming file shall not contain a CID value greater than 65535
+ maximalCID <= 65535
+
+ Value of a CID (%1) exceeded 65,535
+
+ maximalCID
+
+
+
+
+
+
+ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction
+ Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400
+
+ One of the page boundaries is out of range (valid range: 3 - 14400, height = %1, width = %2)
+
+ Math.abs(top - bottom)
+ Math.abs(right - left)
+
+
+
+
+
+
+ Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators
+ false
+
+ A content stream contains operator %1 not defined in ISO 32000-1
+
+ name
+
+
+
+
+
+
+ A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3
+ inheritedResourceNames == ''
+
+ A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary
+
+ inheritedResourceNames
+
+
+
+
+
+
+
+
+ The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK"
+ (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0
+
+ The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3)
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream
+ sameOutputProfileIndirect == true
+
+ File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1)
+
+ outputProfileIndirects
+
+
+
+
+
+
+ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent
+ S != 'GTS_PDFX' || containsDestOutputProfileRef == false
+
+ The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef
+
+
+
+
+
+
+
+
+ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1
+ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0
+
+ The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both
+ overprintFlag == false || OPM == 0
+
+ Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting
+
+ OPM
+
+
+
+
+
+
+
+
+ DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile
+ gOutputCS != null && gOutputCS == "RGB "
+
+ DeviceRGB colour space is used without RGB output intent profile
+
+
+
+
+
+
+ DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile
+ gOutputCS != null && gOutputCS == "CMYK"
+
+ DeviceCMYK colour space is used without CMYK output intent profile
+
+
+
+
+
+
+ DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present
+ gOutputCS != null
+
+ DeviceGray colour space is used without output intent profile
+
+
+
+
+
+
+ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present
+ areColorantsPresent == true
+
+ A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary
+
+
+
+
+
+
+
+
+ All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored
+ areTintAndAlternateConsistent == true
+
+ Several occurrences of a Separation colour space with the same name are not consistent
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR key
+ TR == null
+
+ An ExtGState dictionary contains the TR key
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR2 key with a value other than Default
+ TR2 == null || TR2 == "Default"
+
+ An ExtGState dictionary contains the TR2 key with value %1 other than Default
+
+ TR2
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the HTP key
+ containsHTP == false
+
+ An ExtGState dictionary contains the HTP key
+
+
+
+
+
+
+ All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key
+ HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5)
+
+ A Halftone has type %1 instead of 1 or 5
+
+ HalftoneType
+
+
+
+
+
+
+ Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key
+ HalftoneName == null
+
+ A Halftone dictionary contains the HalftoneName key
+
+
+
+
+
+
+ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1
+ colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null)
+
+ Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants
+
+
+
+
+
+
+
+
+ Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation
+ internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation"
+
+ A rendering intent with non-standard value %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+ An Image dictionary shall not contain the Alternates key
+ containsAlternates == false
+
+ Alternates key is present in the Image dictionary
+
+
+
+
+
+
+ An Image dictionary shall not contain the OPI key
+ containsOPI == false
+
+ OPI key is present in the Image dictionary
+
+
+
+
+
+
+ If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false
+ Interpolate == false
+
+ The value of the Interpolate key in the Image dictionary is true
+
+
+
+
+
+
+ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16
+ BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 || BitsPerComponent == 16
+
+ The value of the BitsPerComponent key in the Image dictionary is %1
+
+ BitsPerComponent
+
+
+
+
+
+
+
+
+ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4
+ nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4
+
+ JPEG2000 image has %1 colour channels that is neither 1, 3 or 4
+
+ nrColorChannels
+
+
+
+
+
+
+ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field
+ hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1
+
+ The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field)
+
+ nrColorSpacesWithApproxField
+
+
+
+
+
+
+ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications
+ hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3
+
+ Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03
+
+ colrMethod
+
+
+
+
+
+
+ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used
+ hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19
+
+ JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A
+
+
+
+
+
+
+ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth
+ bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38)
+
+ JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2)
+
+ bpccBoxPresent
+ bitDepth
+
+
+
+
+
+
+ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key
+ (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false
+
+ The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key
+
+
+
+
+
+
+ A conforming file shall not contain any reference XObjects
+ containsRef == false
+
+ The document contains a reference XObject (Ref key in the form XObject dictionary)
+
+
+
+
+
+
+ A conforming file shall not contain any PostScript XObjects
+ Subtype != "PS"
+
+ The document contains a PostScript XObject
+
+
+
+
+
+
+ Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary
+ internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity"
+
+ The document uses the blend mode %1 not defined in ISO 32000-1:2008
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space
+ gOutputCS != null || containsGroupCS == true || containsTransparency == false
+
+ The page contains transparent objects with no blending colour space defined
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary
+ Type == "Font"
+
+ A Font dictionary has value %1 of Type entry instead of Font
+
+ Type
+
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts
+ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
+
+ Invalid Subtype entry in font dictionary with value %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font
+ Subtype == "Type3" || fontName != null
+
+ A BaseFont entry is missing or has invalid type
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array
+ isStandard == true || FirstChar != null
+
+ A non-standard simple font dictionary has missing or invalid FirstChar entry
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array
+ isStandard == true || LastChar != null
+
+ A non-standard simple font dictionary has missing or invalid LastChar entry
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths
+ isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
+
+ Widths array is missing or has invalid size %1 instead of %2
+
+ Widths_size
+ LastChar - FirstChar + 1
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4
+ fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType"
+
+ Unsupported font file format %1 of the embedded font
+
+ fontFileSubtype
+
+
+
+
+
+
+
+
+
+
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary shall have the following relationship: - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement)
+
+ CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+ CIDFontSupplement
+ CMapSupplement
+
+
+
+
+
+
+ ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-1:2008, 9.7.4, Table 117
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+ All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1
+
+ A non-standard CMap %1 is not embedded
+
+ CMapName
+
+
+
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V"
+
+ A CMap references another non-standard CMap %1
+
+ CMapName
+
+
+
+
+
+
+
+
+ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true
+
+ A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program
+
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true
+
+ A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset
+
+
+
+
+
+
+ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out
+ isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0)
+
+ The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries
+
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the dictionary that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic TrueType fonts shall not define a Differences array unless all of the glyph names in the Differences array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft Unicode (3,1 – Platform ID = 3, Encoding ID = 1) encoding in the 'cmap' table
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+ The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding
+ isSymbolic == false || nrCmaps == 1 || cmap30Present == true
+
+ The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0)
+
+ nrCmaps
+
+
+
+
+
+
+ A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators, regardless of text rendering mode, in any content stream
+ name != ".notdef"
+
+ The document contains a reference to the .notdef glyph
+
+
+
+
+
+
+ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted
+ Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact"
+
+ Unknown or not permitted Annotation type %1
+
+ Subtype
+
+
+
+
+
+
+
+
+ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key
+ Subtype == "Popup" || F != null
+
+ A dictionary of %1 annotation does not contain F key
+
+ Subtype
+
+
+
+
+
+
+ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0
+ F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0)
+
+ Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6)
+
+ F
+ (F & 4) >> 2
+ (F & 2) >> 1
+ (F & 1)
+ (F & 32) >> 5
+ (F & 256) >> 8
+
+
+
+
+
+
+ Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link
+ (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null
+
+ An annotation does not contain an appearance dictionary
+
+
+
+
+
+
+ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key
+ AP == null || AP == "N"
+
+ Annotation's appearance dictionary contains entries %1 other than N
+
+ AP.split('&').filter(elem => elem != 'N').toString()
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary
+ AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0)
+
+ An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary
+
+ N_type
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
+ AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream"
+
+ An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream
+
+ Subtype
+ FT
+
+
+
+
+
+
+ A Widget annotation dictionary shall not contain the A or AA keys
+ containsA == false && containsAA == false
+
+ A Widget annotation contains %1 key(s)
+
+ entries.split('&').filter(elem => elem == 'A' || elem == 'AA').toString()
+
+
+
+
+
+
+ A Field dictionary shall not contain the A or AA keys
+ containsAA == false
+
+ A Form field dictionary contains the AA entry
+
+
+
+
+
+
+ The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
+ NeedAppearances == null || NeedAppearances == false
+
+ The interactive form dictionary contains the NeedAppearances flag with value true
+
+
+
+
+
+
+ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key
+ containsXFA == false
+
+ The interactive form dictionary contains the XFA key
+
+
+
+
+
+
+ A document's Catalog shall not contain the NeedsRendering key
+ NeedsRendering == false
+
+ A document's Catalog contains NeedsRendering flag set to true
+
+
+
+
+
+
+ When computing the digest for the file, it shall be computed over the entire file, including the signature dictionary but excluding the PDF Signature itself
+ doesByteRangeCoverEntireDocument == true
+
+ ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself)
+
+
+
+
+
+
+
+
+
+ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, it shall include the signer's X.509 signing certificate
+ signingCertificatePresent == true
+
+ The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate
+
+
+
+
+
+
+
+
+
+ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature
+ SignerInfoCount == 1
+
+ The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 signer(s) in the PDF Signature instead of one
+
+ SignerInfoCount
+
+
+
+
+
+
+
+
+
+ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted
+ S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"
+
+ Unknown or not permitted Action type %1
+
+ S
+
+
+
+
+
+
+
+
+ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
+ N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
+
+ Unknown or not permitted named action %1
+
+ N
+
+
+
+
+
+
+
+
+ The document's Catalog shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ The document catalog dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+ The Page dictionary shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ The Page dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+ The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2
+ metadata_size == 1
+
+ The document catalog dictionary doesn't contain metadata key
+
+
+
+
+
+
+
+
+ The bytes attribute shall not be used in the header of an XMP packet
+ bytes == null
+
+ The XMP Package contains bytes attribute
+
+
+
+
+
+
+ The encoding attribute shall not be used in the header of an XMP packet
+ encoding == null
+
+ The XMP Package contains encoding attribute
+
+
+
+
+
+
+ All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised)
+ isSerializationValid
+
+ A metadata stream is serialized incorrectly and can not be parsed
+
+
+
+
+
+
+
+
+
+
+ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8
+ actualEncoding == "UTF-8"
+
+ The XMP package uses encoding %1 different from UTF-8
+
+ actualEncoding
+
+
+
+
+
+
+
+
+ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2
+ isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true
+
+ XMP property is either not predefined, or is not defined in any XMP extension schema
+
+
+
+
+
+
+ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2
+ isValueTypeCorrect == true
+
+ XMP property does not correspond to type %1
+
+ predefinedType
+
+
+
+
+
+
+ Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema
+ containsUndefinedFields == false
+
+ An extension schema object contains field(s) %1 not defined by the specification
+
+ undefinedFields
+
+
+
+
+
+
+ The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas
+ isValidBag == true && prefix == "pdfaExtension"
+
+ The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix 'pdfaExtension' (prefix = %2)
+
+ isValidBag
+ prefix
+
+
+
+
+
+
+ Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema'
+ isSchemaValidText == true && schemaPrefix == "pdfaSchema"
+
+ Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2)
+
+ schemaPrefix
+ isSchemaValidText
+
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaSchema'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema"
+
+ Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+ Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema'
+ isPrefixValidText == true && prefixPrefix == "pdfaSchema"
+
+ Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+ Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq Property and namespace prefix 'pdfaSchema'
+ isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema")
+
+ Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2)
+
+ propertyPrefix
+ isPropertyValidSeq
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq ValueType and namespace prefix 'pdfaSchema'
+ isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema")
+
+ Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2)
+
+ valueTypePrefix
+ isValueTypeValidSeq
+
+
+
+
+
+
+ Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'
+ isNameValidText == true && namePrefix == "pdfaProperty"
+
+ Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty"
+
+ Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+ Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'
+ isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty"
+
+ Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or has value different from external or internal (category value = %3)
+
+ categoryPrefix
+ isCategoryValidText
+ category
+
+
+
+
+
+
+ Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaProperty"
+
+ Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isTypeValidText == true && typePrefix == "pdfaType"
+
+ Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2)
+
+ typePrefix
+ isTypeValidText
+
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaType'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType"
+
+ Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+ Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isPrefixValidText == true && prefixPrefix == "pdfaType"
+
+ Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+ Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaType"
+
+ Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type Seq Field and namespace prefix 'pdfaType'
+ isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType")
+
+ Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2)
+
+ fieldPrefix
+ isFieldValidSeq
+
+
+
+
+
+
+ Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'
+ isNameValidText == true && namePrefix == "pdfaField"
+
+ Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField"
+
+ Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+ Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaField"
+
+ Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema
+ Identification_size == 1
+
+ The document metadata stream doesn't contains PDF/A Identification Schema
+
+
+
+
+
+
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+ part == 2
+
+ The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file
+
+ part
+
+
+
+
+
+
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
+ conformance == "B" || conformance == "U" || conformance == "A"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2B conforming file
+
+ conformance
+
+
+
+
+
+
+ Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ partPrefix == null || partPrefix == "pdfaid"
+
+ Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+ Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ conformancePrefix == null || conformancePrefix == "pdfaid"
+
+ Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ conformancePrefix
+
+
+
+
+
+
+ Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ amdPrefix == null || amdPrefix == "pdfaid"
+
+ Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ amdPrefix
+
+
+
+
+
+
+ Property "corr" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ corrPrefix == null || corrPrefix == "pdfaid"
+
+ Property "corr" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ corrPrefix
+
+
+
+
+
+
+ The file specification dictionary for an embedded file shall contain the F and UF keys
+ containsEF == false || (F != null && UF != null)
+
+ The file specification dictionary for an embedded file does not contain either F or UF key (F = %1, UF = %2)
+
+ F
+ UF
+
+
+
+
+
+
+ A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is compliant with either ISO 19005-1 or this part of ISO 19005
+ isValidPDFA12 == true
+
+ An embedded file does not comply to either ISO 19005-1 or ISO 19005-2
+
+
+
+
+
+
+ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key
+ Name != null && Name.length() > 0
+
+ Missing or empty Name entry of the optional content configuration dictionary
+
+
+
+
+
+
+ Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-2 file
+ hasDuplicateName == false
+
+ Optional content configuration dictionary has duplicated name %1
+
+ Name
+
+
+
+
+
+
+ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file
+ OCGsNotContainedInOrder == null
+
+ Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary
+
+ OCGsNotContainedInOrder
+
+
+
+
+
+
+ The AS key shall not appear in any optional content configuration dictionary
+ AS == null
+
+ AS key is present in the optional content configuration dictionary
+
+
+
+
+
+
+ There shall be no AlternatePresentations entry in the document's name dictionary
+ containsAlternatePresentations == false
+
+ The document's name dictionary contains the AlternatePresentations entry
+
+
+
+
+
+
+ There shall be no PresSteps entry in any Page dictionary
+ containsPresSteps == false
+
+ A Page dictionary contains the PresSteps entry
+
+
+
+
+
+
+ The document catalog shall not contain the Requirements key
+ Requirements == null
+
+ The document catalog contains the Requirements key
+
+
+
+
+
+
+
+ null
+ S == "GTS_PDFA1" ? colorSpace : gOutputCS
+
+
+
diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml
new file mode 100644
index 00000000..1297e030
--- /dev/null
+++ b/PDF_A/PDFA-2U.xml
@@ -0,0 +1,1784 @@
+
+
+
+ PDF/A-2U validation profile
+ Validation rules against ISO 19005-2:2011, Level U
+
+
+
+
+
+ The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h)
+ headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header)
+
+ File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, where 'n' is a single digit number between 0 and 7
+
+ header
+ headerOffset
+
+
+
+
+
+
+ The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127
+ headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
+
+ Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4)
+
+ headerByte1
+ headerByte2
+ headerByte3
+ headerByte4
+
+
+
+
+
+
+ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4
+ lastID != null && lastID.length() > 0
+
+ Missing or empty ID in the document trailer
+
+
+
+
+
+
+
+
+ The keyword Encrypt shall not be used in the trailer dictionary
+ isEncrypted != true
+
+ Encrypt keyword is present in the trailer dictionary
+
+
+
+
+
+
+ No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5
+ postEOFDataSize == 0
+
+ %1 byte(s) of data is present after the last end-of-file marker
+
+ postEOFDataSize
+
+
+
+
+
+
+
+
+ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker
+ xrefEOLMarkersComplyPDFA
+
+ Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table
+
+
+
+
+
+
+ Hexadecimal strings shall contain an even number of non-white-space characters
+ (isHex != true) || hexCount % 2 == 0
+
+ A hexadecimal string contains odd number (%1) of non-white-space characters
+
+ hexCount
+
+
+
+
+
+
+ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)
+ (isHex != true) || containsOnlyHex == true
+
+ Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f
+
+
+
+
+
+
+ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword
+ Length == realLength
+
+ Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s))
+
+ realLength
+ Length
+
+
+
+
+
+
+ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker
+ streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true
+
+ Extra spacings or missing EOL characters around keywords 'stream' and 'endstream'
+
+
+
+
+
+
+ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys
+ F == null && FFilter == null && FDecodeParms == null
+
+ A stream object dictionary contains %1 key(s)
+
+ keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString()
+
+
+
+
+
+
+ All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be used
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || (internalRepresentation == "Crypt" && decodeParms == "Identity")
+
+ Unknown or not permitted Stream filter %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+ Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences
+ isValidUtf8 == true
+
+ The name value %1 does not represent a correct UTF-8 character sequence
+
+ unicodeValue
+
+
+
+
+
+
+
+
+ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker
+ spacingCompliesPDFA
+
+ Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj'
+
+
+
+
+
+
+ The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || internalRepresentation == "CCF" || internalRepresentation == "DCT"
+
+ Inline image uses not permitted or unknown filter %1
+
+ internalRepresentation
+
+
+
+
+
+
+ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258)
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == ''
+
+ The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP
+
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString()
+
+
+
+
+
+
+
+
+ If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue
+ permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').length == 0
+
+ The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary
+
+ entries.split('&').filter(elem => elem == 'DigestLocation' ||
+ elem == 'DigestMethod' || elem == 'DigestValue').toString()
+
+
+
+
+
+
+
+
+ A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648
+ (intValue <= 2147483647) && (intValue >= -2147483648)
+
+ Integer value %1 out of range
+
+ intValue
+
+
+
+
+
+
+ A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38
+ (realValue >= -3.403e+38) && (realValue <= 3.403e+38)
+
+ Real value %1 out of range
+
+ realValue
+
+
+
+
+
+
+ A conforming file shall not contain any string longer than 32767 bytes
+ value.length() < 32768
+
+ String length (%1) exceeded 32767
+
+ value.length()
+
+
+
+
+
+
+ A conforming file shall not contain any name longer than 127 bytes
+ internalRepresentation.length() <= 127
+
+ Name length (%1) exceeded 127
+
+ internalRepresentation.length()
+
+
+
+
+
+
+ A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38)
+ realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38)
+
+ Non-zero real value %1 is too close to 0.0
+
+ realValue
+
+
+
+
+
+
+ A conforming file shall not contain more than 8388607 indirect objects
+ nrIndirects <= 8388607
+
+ Number of indirect objects in a PDF file (%1) exceeded 8,388,607
+
+ nrIndirects
+
+
+
+
+
+
+ A conforming file shall not nest q/Q pairs by more than 28 nesting levels
+ nestingLevel <= 28
+
+ Depth of graphics state nesting of q/Q operators (%1) exceeded 28
+
+ nestingLevel
+
+
+
+
+
+
+ A conforming file shall not contain a DeviceN colour space with more than 32 colourants
+ nrComponents <= 32
+
+ Number of DeviceN components (%1) exceeded 32
+
+ nrComponents
+
+
+
+
+
+
+ A conforming file shall not contain a CID value greater than 65535
+ maximalCID <= 65535
+
+ Value of a CID (%1) exceeded 65,535
+
+ maximalCID
+
+
+
+
+
+
+ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction
+ Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400
+
+ One of the page boundaries is out of range (valid range: 3 - 14400, height = %1, width = %2)
+
+ Math.abs(top - bottom)
+ Math.abs(right - left)
+
+
+
+
+
+
+ Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators
+ false
+
+ A content stream contains operator %1 not defined in ISO 32000-1
+
+ name
+
+
+
+
+
+
+ A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3
+ inheritedResourceNames == ''
+
+ A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary
+
+ inheritedResourceNames
+
+
+
+
+
+
+
+
+ The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK"
+ (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0
+
+ The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3)
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream
+ sameOutputProfileIndirect == true
+
+ File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1)
+
+ outputProfileIndirects
+
+
+
+
+
+
+ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent
+ S != 'GTS_PDFX' || containsDestOutputProfileRef == false
+
+ The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef
+
+
+
+
+
+
+
+
+ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1
+ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0
+
+ The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both
+ overprintFlag == false || OPM == 0
+
+ Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting
+
+ OPM
+
+
+
+
+
+
+
+
+ DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile
+ gOutputCS != null && gOutputCS == "RGB "
+
+ DeviceRGB colour space is used without RGB output intent profile
+
+
+
+
+
+
+ DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile
+ gOutputCS != null && gOutputCS == "CMYK"
+
+ DeviceCMYK colour space is used without CMYK output intent profile
+
+
+
+
+
+
+ DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present
+ gOutputCS != null
+
+ DeviceGray colour space is used without output intent profile
+
+
+
+
+
+
+ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present
+ areColorantsPresent == true
+
+ A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary
+
+
+
+
+
+
+
+
+ All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored
+ areTintAndAlternateConsistent == true
+
+ Several occurrences of a Separation colour space with the same name are not consistent
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR key
+ TR == null
+
+ An ExtGState dictionary contains the TR key
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR2 key with a value other than Default
+ TR2 == null || TR2 == "Default"
+
+ An ExtGState dictionary contains the TR2 key with value %1 other than Default
+
+ TR2
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the HTP key
+ containsHTP == false
+
+ An ExtGState dictionary contains the HTP key
+
+
+
+
+
+
+ All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key
+ HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5)
+
+ A Halftone has type %1 instead of 1 or 5
+
+ HalftoneType
+
+
+
+
+
+
+ Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key
+ HalftoneName == null
+
+ A Halftone dictionary contains the HalftoneName key
+
+
+
+
+
+
+ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1
+ colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null)
+
+ Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants
+
+
+
+
+
+
+
+
+ Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation
+ internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation"
+
+ A rendering intent with non-standard value %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+ An Image dictionary shall not contain the Alternates key
+ containsAlternates == false
+
+ Alternates key is present in the Image dictionary
+
+
+
+
+
+
+ An Image dictionary shall not contain the OPI key
+ containsOPI == false
+
+ OPI key is present in the Image dictionary
+
+
+
+
+
+
+ If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false
+ Interpolate == false
+
+ The value of the Interpolate key in the Image dictionary is true
+
+
+
+
+
+
+ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16
+ BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 || BitsPerComponent == 16
+
+ The value of the BitsPerComponent key in the Image dictionary is %1
+
+ BitsPerComponent
+
+
+
+
+
+
+
+
+ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4
+ nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4
+
+ JPEG2000 image has %1 colour channels that is neither 1, 3 or 4
+
+ nrColorChannels
+
+
+
+
+
+
+ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field
+ hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1
+
+ The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field)
+
+ nrColorSpacesWithApproxField
+
+
+
+
+
+
+ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications
+ hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3
+
+ Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03
+
+ colrMethod
+
+
+
+
+
+
+ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used
+ hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19
+
+ JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A
+
+
+
+
+
+
+ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth
+ bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38)
+
+ JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2)
+
+ bpccBoxPresent
+ bitDepth
+
+
+
+
+
+
+ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key
+ (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false
+
+ The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key
+
+
+
+
+
+
+ A conforming file shall not contain any reference XObjects
+ containsRef == false
+
+ The document contains a reference XObject (Ref key in the form XObject dictionary)
+
+
+
+
+
+
+ A conforming file shall not contain any PostScript XObjects
+ Subtype != "PS"
+
+ The document contains a PostScript XObject
+
+
+
+
+
+
+ Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary
+ internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity"
+
+ The document uses the blend mode %1 not defined in ISO 32000-1:2008
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space
+ gOutputCS != null || containsGroupCS == true || containsTransparency == false
+
+ The page contains transparent objects with no blending colour space defined
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary
+ Type == "Font"
+
+ A Font dictionary has value %1 of Type entry instead of Font
+
+ Type
+
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts
+ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
+
+ Invalid Subtype entry in font dictionary with value %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font
+ Subtype == "Type3" || fontName != null
+
+ A BaseFont entry is missing or has invalid type
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array
+ isStandard == true || FirstChar != null
+
+ A non-standard simple font dictionary has missing or invalid FirstChar entry
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array
+ isStandard == true || LastChar != null
+
+ A non-standard simple font dictionary has missing or invalid LastChar entry
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths
+ isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
+
+ Widths array is missing or has invalid size %1 instead of %2
+
+ Widths_size
+ LastChar - FirstChar + 1
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4
+ fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType"
+
+ Unsupported font file format %1 of the embedded font
+
+ fontFileSubtype
+
+
+
+
+
+
+
+
+
+
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary shall have the following relationship: - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement)
+
+ CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+ CIDFontSupplement
+ CMapSupplement
+
+
+
+
+
+
+ ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-1:2008, 9.7.4, Table 117
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+ All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1
+
+ A non-standard CMap %1 is not embedded
+
+ CMapName
+
+
+
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V"
+
+ A CMap references another non-standard CMap %1
+
+ CMapName
+
+
+
+
+
+
+
+
+ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true
+
+ A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program
+
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true
+
+ A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset
+
+
+
+
+
+
+ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out
+ isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0)
+
+ The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries
+
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the dictionary that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic TrueType fonts shall not define a Differences array unless all of the glyph names in the Differences array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft Unicode (3,1 – Platform ID = 3, Encoding ID = 1) encoding in the 'cmap' table
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+ The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding
+ isSymbolic == false || nrCmaps == 1 || cmap30Present == true
+
+ The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0)
+
+ nrCmaps
+
+
+
+
+
+
+ The Font dictionary of all fonts shall define the map of all used character codes to Unicode values, either via a ToUnicode entry, or other mechanisms as defined in ISO 19005-2, 6.2.11.7.2
+ toUnicode != null
+
+ The glyph can not be mapped to Unicode
+
+
+
+
+
+
+
+
+ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE
+ toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1)
+
+ The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard
+
+
+
+
+
+
+ A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators, regardless of text rendering mode, in any content stream
+ name != ".notdef"
+
+ The document contains a reference to the .notdef glyph
+
+
+
+
+
+
+ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted
+ Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact"
+
+ Unknown or not permitted Annotation type %1
+
+ Subtype
+
+
+
+
+
+
+
+
+ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key
+ Subtype == "Popup" || F != null
+
+ A dictionary of %1 annotation does not contain F key
+
+ Subtype
+
+
+
+
+
+
+ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0
+ F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0)
+
+ Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6)
+
+ F
+ (F & 4) >> 2
+ (F & 2) >> 1
+ (F & 1)
+ (F & 32) >> 5
+ (F & 256) >> 8
+
+
+
+
+
+
+ Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link
+ (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null
+
+ An annotation does not contain an appearance dictionary
+
+
+
+
+
+
+ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key
+ AP == null || AP == "N"
+
+ Annotation's appearance dictionary contains entries %1 other than N
+
+ AP.split('&').filter(elem => elem != 'N').toString()
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary
+ AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0)
+
+ An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary
+
+ N_type
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
+ AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream"
+
+ An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream
+
+ Subtype
+ FT
+
+
+
+
+
+
+ A Widget annotation dictionary shall not contain the A or AA keys
+ containsA == false && containsAA == false
+
+ A Widget annotation contains %1 key(s)
+
+ entries.split('&').filter(elem => elem == 'A' || elem == 'AA').toString()
+
+
+
+
+
+
+ A Field dictionary shall not contain the A or AA keys
+ containsAA == false
+
+ A Form field dictionary contains the AA entry
+
+
+
+
+
+
+ The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
+ NeedAppearances == null || NeedAppearances == false
+
+ The interactive form dictionary contains the NeedAppearances flag with value true
+
+
+
+
+
+
+ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key
+ containsXFA == false
+
+ The interactive form dictionary contains the XFA key
+
+
+
+
+
+
+ A document's Catalog shall not contain the NeedsRendering key
+ NeedsRendering == false
+
+ A document's Catalog contains NeedsRendering flag set to true
+
+
+
+
+
+
+ When computing the digest for the file, it shall be computed over the entire file, including the signature dictionary but excluding the PDF Signature itself
+ doesByteRangeCoverEntireDocument == true
+
+ ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself)
+
+
+
+
+
+
+
+
+
+ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, it shall include the signer's X.509 signing certificate
+ signingCertificatePresent == true
+
+ The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate
+
+
+
+
+
+
+
+
+
+ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature
+ SignerInfoCount == 1
+
+ The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 signer(s) in the PDF Signature instead of one
+
+ SignerInfoCount
+
+
+
+
+
+
+
+
+
+ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted
+ S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"
+
+ Unknown or not permitted Action type %1
+
+ S
+
+
+
+
+
+
+
+
+ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
+ N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
+
+ Unknown or not permitted named action %1
+
+ N
+
+
+
+
+
+
+
+
+ The document's Catalog shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ The document catalog dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+ The Page dictionary shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ The Page dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+ The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2
+ metadata_size == 1
+
+ The document catalog dictionary doesn't contain metadata key
+
+
+
+
+
+
+
+
+ The bytes attribute shall not be used in the header of an XMP packet
+ bytes == null
+
+ The XMP Package contains bytes attribute
+
+
+
+
+
+
+ The encoding attribute shall not be used in the header of an XMP packet
+ encoding == null
+
+ The XMP Package contains encoding attribute
+
+
+
+
+
+
+ All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised)
+ isSerializationValid
+
+ A metadata stream is serialized incorrectly and can not be parsed
+
+
+
+
+
+
+
+
+
+
+ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8
+ actualEncoding == "UTF-8"
+
+ The XMP package uses encoding %1 different from UTF-8
+
+ actualEncoding
+
+
+
+
+
+
+
+
+ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2
+ isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true
+
+ XMP property is either not predefined, or is not defined in any XMP extension schema
+
+
+
+
+
+
+ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2
+ isValueTypeCorrect == true
+
+ XMP property does not correspond to type %1
+
+ predefinedType
+
+
+
+
+
+
+ Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema
+ containsUndefinedFields == false
+
+ An extension schema object contains field(s) %1 not defined by the specification
+
+ undefinedFields
+
+
+
+
+
+
+ The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas
+ isValidBag == true && prefix == "pdfaExtension"
+
+ The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix 'pdfaExtension' (prefix = %2)
+
+ isValidBag
+ prefix
+
+
+
+
+
+
+ Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema'
+ isSchemaValidText == true && schemaPrefix == "pdfaSchema"
+
+ Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2)
+
+ schemaPrefix
+ isSchemaValidText
+
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaSchema'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema"
+
+ Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+ Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema'
+ isPrefixValidText == true && prefixPrefix == "pdfaSchema"
+
+ Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+ Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq Property and namespace prefix 'pdfaSchema'
+ isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema")
+
+ Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2)
+
+ propertyPrefix
+ isPropertyValidSeq
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq ValueType and namespace prefix 'pdfaSchema'
+ isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema")
+
+ Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2)
+
+ valueTypePrefix
+ isValueTypeValidSeq
+
+
+
+
+
+
+ Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'
+ isNameValidText == true && namePrefix == "pdfaProperty"
+
+ Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty"
+
+ Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+ Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'
+ isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty"
+
+ Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or has value different from external or internal (category value = %3)
+
+ categoryPrefix
+ isCategoryValidText
+ category
+
+
+
+
+
+
+ Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaProperty"
+
+ Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isTypeValidText == true && typePrefix == "pdfaType"
+
+ Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2)
+
+ typePrefix
+ isTypeValidText
+
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaType'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType"
+
+ Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+ Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isPrefixValidText == true && prefixPrefix == "pdfaType"
+
+ Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+ Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaType"
+
+ Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type Seq Field and namespace prefix 'pdfaType'
+ isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType")
+
+ Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2)
+
+ fieldPrefix
+ isFieldValidSeq
+
+
+
+
+
+
+ Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'
+ isNameValidText == true && namePrefix == "pdfaField"
+
+ Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField"
+
+ Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+ Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaField"
+
+ Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema
+ Identification_size == 1
+
+ The document metadata stream doesn't contains PDF/A Identification Schema
+
+
+
+
+
+
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+ part == 2
+
+ The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file
+
+ part
+
+
+
+
+
+
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
+ conformance == "U" || conformance == "A"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-2U conforming file
+
+ conformance
+
+
+
+
+
+
+ Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ partPrefix == null || partPrefix == "pdfaid"
+
+ Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+ Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ conformancePrefix == null || conformancePrefix == "pdfaid"
+
+ Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ conformancePrefix
+
+
+
+
+
+
+ Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ amdPrefix == null || amdPrefix == "pdfaid"
+
+ Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ amdPrefix
+
+
+
+
+
+
+ Property "corr" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ corrPrefix == null || corrPrefix == "pdfaid"
+
+ Property "corr" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ corrPrefix
+
+
+
+
+
+
+ The file specification dictionary for an embedded file shall contain the F and UF keys
+ containsEF == false || (F != null && UF != null)
+
+ The file specification dictionary for an embedded file does not contain either F or UF key (F = %1, UF = %2)
+
+ F
+ UF
+
+
+
+
+
+
+ A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is compliant with either ISO 19005-1 or this part of ISO 19005
+ isValidPDFA12 == true
+
+ An embedded file does not comply to either ISO 19005-1 or ISO 19005-2
+
+
+
+
+
+
+ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key
+ Name != null && Name.length() > 0
+
+ Missing or empty Name entry of the optional content configuration dictionary
+
+
+
+
+
+
+ Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-2 file
+ hasDuplicateName == false
+
+ Optional content configuration dictionary has duplicated name %1
+
+ Name
+
+
+
+
+
+
+ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file
+ OCGsNotContainedInOrder == null
+
+ Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary
+
+ OCGsNotContainedInOrder
+
+
+
+
+
+
+ The AS key shall not appear in any optional content configuration dictionary
+ AS == null
+
+ AS key is present in the optional content configuration dictionary
+
+
+
+
+
+
+ There shall be no AlternatePresentations entry in the document's name dictionary
+ containsAlternatePresentations == false
+
+ The document's name dictionary contains the AlternatePresentations entry
+
+
+
+
+
+
+ There shall be no PresSteps entry in any Page dictionary
+ containsPresSteps == false
+
+ A Page dictionary contains the PresSteps entry
+
+
+
+
+
+
+ The document catalog shall not contain the Requirements key
+ Requirements == null
+
+ The document catalog contains the Requirements key
+
+
+
+
+
+
+
+ null
+ S == "GTS_PDFA1" ? colorSpace : gOutputCS
+
+
+
diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml
new file mode 100644
index 00000000..e4e3be24
--- /dev/null
+++ b/PDF_A/PDFA-3A.xml
@@ -0,0 +1,1902 @@
+
+
+
+ PDF/A-3A validation profile
+ Validation rules against ISO 19005-3:2012, Level A
+
+
+
+
+
+ The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h)
+ headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header)
+
+ File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, where 'n' is a single digit number between 0 and 7
+
+ header
+ headerOffset
+
+
+
+
+
+
+ The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127
+ headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
+
+ Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4)
+
+ headerByte1
+ headerByte2
+ headerByte3
+ headerByte4
+
+
+
+
+
+
+ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4
+ lastID != null && lastID.length() > 0
+
+ Missing or empty ID in the document trailer
+
+
+
+
+
+
+
+
+ The keyword Encrypt shall not be used in the trailer dictionary
+ isEncrypted != true
+
+ Encrypt keyword is present in the trailer dictionary
+
+
+
+
+
+
+ No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5
+ postEOFDataSize == 0
+
+ %1 byte(s) of data is present after the last end-of-file marker
+
+ postEOFDataSize
+
+
+
+
+
+
+
+
+ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker
+ xrefEOLMarkersComplyPDFA
+
+ Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table
+
+
+
+
+
+
+ Hexadecimal strings shall contain an even number of non-white-space characters
+ (isHex != true) || hexCount % 2 == 0
+
+ A hexadecimal string contains odd number (%1) of non-white-space characters
+
+ hexCount
+
+
+
+
+
+
+ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)
+ (isHex != true) || containsOnlyHex == true
+
+ Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f
+
+
+
+
+
+
+ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword
+ Length == realLength
+
+ Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s))
+
+ realLength
+ Length
+
+
+
+
+
+
+ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker
+ streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true
+
+ Extra spacings or missing EOL characters around keywords 'stream' and 'endstream'
+
+
+
+
+
+
+ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys
+ F == null && FFilter == null && FDecodeParms == null
+
+ A stream object dictionary contains %1 key(s)
+
+ keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString()
+
+
+
+
+
+
+ All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be used
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || (internalRepresentation == "Crypt" && decodeParms == "Identity")
+
+ Unknown or not permitted Stream filter %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+ Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences
+ isValidUtf8 == true
+
+ The name value %1 does not represent a correct UTF-8 character sequence
+
+ unicodeValue
+
+
+
+
+
+
+
+
+ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker
+ spacingCompliesPDFA
+
+ Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj'
+
+
+
+
+
+
+ The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || internalRepresentation == "CCF" || internalRepresentation == "DCT"
+
+ Inline image uses not permitted or unknown filter %1
+
+ internalRepresentation
+
+
+
+
+
+
+ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258)
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == ''
+
+ The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP
+
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString()
+
+
+
+
+
+
+
+
+ If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue
+ permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').length == 0
+
+ The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary
+
+ entries.split('&').filter(elem => elem == 'DigestLocation' ||
+ elem == 'DigestMethod' || elem == 'DigestValue').toString()
+
+
+
+
+
+
+
+
+ A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648
+ (intValue <= 2147483647) && (intValue >= -2147483648)
+
+ Integer value %1 out of range
+
+ intValue
+
+
+
+
+
+
+ A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38
+ (realValue >= -3.403e+38) && (realValue <= 3.403e+38)
+
+ Real value %1 out of range
+
+ realValue
+
+
+
+
+
+
+ A conforming file shall not contain any string longer than 32767 bytes
+ value.length() < 32768
+
+ String length (%1) exceeded 32767
+
+ value.length()
+
+
+
+
+
+
+ A conforming file shall not contain any name longer than 127 bytes
+ internalRepresentation.length() <= 127
+
+ Name length (%1) exceeded 127
+
+ internalRepresentation.length()
+
+
+
+
+
+
+ A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38)
+ realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38)
+
+ Non-zero real value %1 is too close to 0.0
+
+ realValue
+
+
+
+
+
+
+ A conforming file shall not contain more than 8388607 indirect objects
+ nrIndirects <= 8388607
+
+ Number of indirect objects in a PDF file (%1) exceeded 8,388,607
+
+ nrIndirects
+
+
+
+
+
+
+ A conforming file shall not nest q/Q pairs by more than 28 nesting levels
+ nestingLevel <= 28
+
+ Depth of graphics state nesting of q/Q operators (%1) exceeded 28
+
+ nestingLevel
+
+
+
+
+
+
+ A conforming file shall not contain a DeviceN colour space with more than 32 colourants
+ nrComponents <= 32
+
+ Number of DeviceN components (%1) exceeded 32
+
+ nrComponents
+
+
+
+
+
+
+ A conforming file shall not contain a CID value greater than 65535
+ maximalCID <= 65535
+
+ Value of a CID (%1) exceeded 65,535
+
+ maximalCID
+
+
+
+
+
+
+ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction
+ Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400
+
+ One of the page boundaries is out of range (valid range: 3 - 14400, height = %1, width = %2)
+
+ Math.abs(top - bottom)
+ Math.abs(right - left)
+
+
+
+
+
+
+ Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators
+ false
+
+ A content stream contains operator %1 not defined in ISO 32000-1
+
+ name
+
+
+
+
+
+
+ A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3
+ inheritedResourceNames == ''
+
+ A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary
+
+ inheritedResourceNames
+
+
+
+
+
+
+
+
+ The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK"
+ (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0
+
+ The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3)
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream
+ sameOutputProfileIndirect == true
+
+ File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1)
+
+ outputProfileIndirects
+
+
+
+
+
+
+ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent
+ S != 'GTS_PDFX' || containsDestOutputProfileRef == false
+
+ The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef
+
+
+
+
+
+
+
+
+ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1
+ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0
+
+ The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both
+ overprintFlag == false || OPM == 0
+
+ Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting
+
+ OPM
+
+
+
+
+
+
+
+
+ DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile
+ gOutputCS != null && gOutputCS == "RGB "
+
+ DeviceRGB colour space is used without RGB output intent profile
+
+
+
+
+
+
+ DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile
+ gOutputCS != null && gOutputCS == "CMYK"
+
+ DeviceCMYK colour space is used without CMYK output intent profile
+
+
+
+
+
+
+ DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present
+ gOutputCS != null
+
+ DeviceGray colour space is used without output intent profile
+
+
+
+
+
+
+ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present
+ areColorantsPresent == true
+
+ A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary
+
+
+
+
+
+
+
+
+ All Separation arrays within a single PDF/A-3 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored
+ areTintAndAlternateConsistent == true
+
+ Several occurrences of a Separation colour space with the same name are not consistent
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR key
+ TR == null
+
+ An ExtGState dictionary contains the TR key
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR2 key with a value other than Default
+ TR2 == null || TR2 == "Default"
+
+ An ExtGState dictionary contains the TR2 key with value %1 other than Default
+
+ TR2
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the HTP key
+ containsHTP == false
+
+ An ExtGState dictionary contains the HTP key
+
+
+
+
+
+
+ All halftones in a conforming PDF/A-3 file shall have the value 1 or 5 for the HalftoneType key
+ HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5)
+
+ A Halftone has type %1 instead of 1 or 5
+
+ HalftoneType
+
+
+
+
+
+
+ Halftones in a conforming PDF/A-3 file shall not contain a HalftoneName key
+ HalftoneName == null
+
+ A Halftone dictionary contains the HalftoneName key
+
+
+
+
+
+
+ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1
+ colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null)
+
+ Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants
+
+
+
+
+
+
+
+
+ Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation
+ internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation"
+
+ A rendering intent with non-standard value %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+ An Image dictionary shall not contain the Alternates key
+ containsAlternates == false
+
+ Alternates key is present in the Image dictionary
+
+
+
+
+
+
+ An Image dictionary shall not contain the OPI key
+ containsOPI == false
+
+ OPI key is present in the Image dictionary
+
+
+
+
+
+
+ If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false
+ Interpolate == false
+
+ The value of the Interpolate key in the Image dictionary is true
+
+
+
+
+
+
+ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16
+ BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 || BitsPerComponent == 16
+
+ The value of the BitsPerComponent key in the Image dictionary is %1
+
+ BitsPerComponent
+
+
+
+
+
+
+
+
+ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4
+ nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4
+
+ JPEG2000 image has %1 colour channels that is neither 1, 3 or 4
+
+ nrColorChannels
+
+
+
+
+
+
+ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field
+ hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1
+
+ The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field)
+
+ nrColorSpacesWithApproxField
+
+
+
+
+
+
+ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications
+ hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3
+
+ Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03
+
+ colrMethod
+
+
+
+
+
+
+ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used
+ hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19
+
+ JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A
+
+
+
+
+
+
+ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth
+ bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38)
+
+ JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2)
+
+ bpccBoxPresent
+ bitDepth
+
+
+
+
+
+
+ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key
+ (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false
+
+ The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key
+
+
+
+
+
+
+ A conforming file shall not contain any reference XObjects
+ containsRef == false
+
+ The document contains a reference XObject (Ref key in the form XObject dictionary)
+
+
+
+
+
+
+ A conforming file shall not contain any PostScript XObjects
+ Subtype != "PS"
+
+ The document contains a PostScript XObject
+
+
+
+
+
+
+ Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary
+ internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity"
+
+ The document uses the blend mode %1 not defined in ISO 32000-1:2008
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space
+ gOutputCS != null || containsGroupCS == true || containsTransparency == false
+
+ The page contains transparent objects with no blending colour space defined
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary
+ Type == "Font"
+
+ A Font dictionary has value %1 of Type entry instead of Font
+
+ Type
+
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts
+ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
+
+ Invalid Subtype entry in font dictionary with value %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font
+ Subtype == "Type3" || fontName != null
+
+ A BaseFont entry is missing or has invalid type
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array
+ isStandard == true || FirstChar != null
+
+ A non-standard simple font dictionary has missing or invalid FirstChar entry
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array
+ isStandard == true || LastChar != null
+
+ A non-standard simple font dictionary has missing or invalid LastChar entry
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths
+ isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
+
+ Widths array is missing or has invalid size %1 instead of %2
+
+ Widths_size
+ LastChar - FirstChar + 1
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4
+ fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType"
+
+ Unsupported font file format %1 of the embedded font
+
+ fontFileSubtype
+
+
+
+
+
+
+
+
+
+
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary shall have the following relationship: - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement)
+
+ CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+ CIDFontSupplement
+ CMapSupplement
+
+
+
+
+
+
+ ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-1:2008, 9.7.4, Table 117
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+ All CMaps used within a PDF/A-3 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1
+
+ A non-standard CMap %1 is not embedded
+
+ CMapName
+
+
+
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V"
+
+ A CMap references another non-standard CMap %1
+
+ CMapName
+
+
+
+
+
+
+
+
+ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true
+
+ A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program
+
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true
+
+ A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset
+
+
+
+
+
+
+ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out
+ isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0)
+
+ The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries
+
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the dictionary that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic TrueType fonts shall not define a Differences array unless all of the glyph names in the Differences array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft Unicode (3,1 – Platform ID = 3, Encoding ID = 1) encoding in the 'cmap' table
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+ The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding
+ isSymbolic == false || nrCmaps == 1 || cmap30Present == true
+
+ The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0)
+
+ nrCmaps
+
+
+
+
+
+
+ The Font dictionary of all fonts shall define the map of all used character codes to Unicode values, either via a ToUnicode entry, or other mechanisms as defined in ISO 19005-3, 6.2.11.7.2
+ toUnicode != null
+
+ The glyph can not be mapped to Unicode
+
+
+
+
+
+
+
+
+ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE
+ toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1)
+
+ The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard
+
+
+
+
+
+
+ For any character, regardless of its rendering mode, that is mapped to a code or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a character is a part
+ unicodePUA == false || actualTextPresent == true
+
+ The character has Unicode value from Private Use Area, and no replacement text present
+
+
+
+
+
+
+
+
+ A PDF/A-3 compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators, regardless of text rendering mode, in any content stream
+ name != ".notdef"
+
+ The document contains a reference to the .notdef glyph
+
+
+
+
+
+
+ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted
+ Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact"
+
+ Unknown or not permitted Annotation type %1
+
+ Subtype
+
+
+
+
+
+
+
+
+ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key
+ Subtype == "Popup" || F != null
+
+ A dictionary of %1 annotation does not contain F key
+
+ Subtype
+
+
+
+
+
+
+ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0
+ F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0)
+
+ Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6)
+
+ F
+ (F & 4) >> 2
+ (F & 2) >> 1
+ (F & 1)
+ (F & 32) >> 5
+ (F & 256) >> 8
+
+
+
+
+
+
+ Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link
+ (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null
+
+ An annotation does not contain an appearance dictionary
+
+
+
+
+
+
+ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key
+ AP == null || AP == "N"
+
+ Annotation's appearance dictionary contains entries %1 other than N
+
+ AP.split('&').filter(elem => elem != 'N').toString()
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary
+ AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0)
+
+ An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary
+
+ N_type
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
+ AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream"
+
+ An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream
+
+ Subtype
+ FT
+
+
+
+
+
+
+ A Widget annotation dictionary shall not contain the A or AA keys
+ containsA == false && containsAA == false
+
+ A Widget annotation contains %1 key(s)
+
+ entries.split('&').filter(elem => elem == 'A' || elem == 'AA').toString()
+
+
+
+
+
+
+ A Field dictionary shall not contain the A or AA keys
+ containsAA == false
+
+ A Form field dictionary contains the AA entry
+
+
+
+
+
+
+ The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
+ NeedAppearances == null || NeedAppearances == false
+
+ The interactive form dictionary contains the NeedAppearances flag with value true
+
+
+
+
+
+
+ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-3 file, if present, shall not contain the XFA key
+ containsXFA == false
+
+ The interactive form dictionary contains the XFA key
+
+
+
+
+
+
+ A document's Catalog shall not contain the NeedsRendering key
+ NeedsRendering == false
+
+ A document's Catalog contains NeedsRendering flag set to true
+
+
+
+
+
+
+ When computing the digest for the file, it shall be computed over the entire file, including the signature dictionary but excluding the PDF Signature itself
+ doesByteRangeCoverEntireDocument == true
+
+ ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself)
+
+
+
+
+
+
+
+
+
+ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, it shall include the signer's X.509 signing certificate
+ signingCertificatePresent == true
+
+ The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate
+
+
+
+
+
+
+
+
+
+ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature
+ SignerInfoCount == 1
+
+ The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 signer(s) in the PDF Signature instead of one
+
+ SignerInfoCount
+
+
+
+
+
+
+
+
+
+ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted
+ S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"
+
+ Unknown or not permitted Action type %1
+
+ S
+
+
+
+
+
+
+
+
+ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
+ N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
+
+ Unknown or not permitted named action %1
+
+ N
+
+
+
+
+
+
+
+
+ The document's Catalog shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ The document catalog dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+ The Page dictionary shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ The Page dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+ The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2
+ metadata_size == 1
+
+ The document catalog dictionary doesn't contain metadata key
+
+
+
+
+
+
+
+
+ The bytes attribute shall not be used in the header of an XMP packet
+ bytes == null
+
+ The XMP Package contains bytes attribute
+
+
+
+
+
+
+ The encoding attribute shall not be used in the header of an XMP packet
+ encoding == null
+
+ The XMP Package contains encoding attribute
+
+
+
+
+
+
+ All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised)
+ isSerializationValid
+
+ A metadata stream is serialized incorrectly and can not be parsed
+
+
+
+
+
+
+
+
+
+
+ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8
+ actualEncoding == "UTF-8"
+
+ The XMP package uses encoding %1 different from UTF-8
+
+ actualEncoding
+
+
+
+
+
+
+
+
+ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2
+ isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true
+
+ XMP property is either not predefined, or is not defined in any XMP extension schema
+
+
+
+
+
+
+ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2
+ isValueTypeCorrect == true
+
+ XMP property does not correspond to type %1
+
+ predefinedType
+
+
+
+
+
+
+ Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema
+ containsUndefinedFields == false
+
+ An extension schema object contains field(s) %1 not defined by the specification
+
+ undefinedFields
+
+
+
+
+
+
+ The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas
+ isValidBag == true && prefix == "pdfaExtension"
+
+ The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix 'pdfaExtension' (prefix = %2)
+
+ isValidBag
+ prefix
+
+
+
+
+
+
+ Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema'
+ isSchemaValidText == true && schemaPrefix == "pdfaSchema"
+
+ Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2)
+
+ schemaPrefix
+ isSchemaValidText
+
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaSchema'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema"
+
+ Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+ Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema'
+ isPrefixValidText == true && prefixPrefix == "pdfaSchema"
+
+ Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+ Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq Property and namespace prefix 'pdfaSchema'
+ isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema")
+
+ Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2)
+
+ propertyPrefix
+ isPropertyValidSeq
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq ValueType and namespace prefix 'pdfaSchema'
+ isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema")
+
+ Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2)
+
+ valueTypePrefix
+ isValueTypeValidSeq
+
+
+
+
+
+
+ Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'
+ isNameValidText == true && namePrefix == "pdfaProperty"
+
+ Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty"
+
+ Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+ Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'
+ isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty"
+
+ Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or has value different from external or internal (category value = %3)
+
+ categoryPrefix
+ isCategoryValidText
+ category
+
+
+
+
+
+
+ Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaProperty"
+
+ Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isTypeValidText == true && typePrefix == "pdfaType"
+
+ Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2)
+
+ typePrefix
+ isTypeValidText
+
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaType'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType"
+
+ Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+ Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isPrefixValidText == true && prefixPrefix == "pdfaType"
+
+ Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+ Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaType"
+
+ Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type Seq Field and namespace prefix 'pdfaType'
+ isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType")
+
+ Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2)
+
+ fieldPrefix
+ isFieldValidSeq
+
+
+
+
+
+
+ Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'
+ isNameValidText == true && namePrefix == "pdfaField"
+
+ Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField"
+
+ Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+ Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaField"
+
+ Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema
+ Identification_size == 1
+
+ The document metadata stream doesn't contains PDF/A Identification Schema
+
+
+
+
+
+
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+ part == 3
+
+ The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file
+
+ part
+
+
+
+
+
+
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
+ conformance == "A"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-3A conforming file
+
+ conformance
+
+
+
+
+
+
+ Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ partPrefix == null || partPrefix == "pdfaid"
+
+ Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+ Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ conformancePrefix == null || conformancePrefix == "pdfaid"
+
+ Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ conformancePrefix
+
+
+
+
+
+
+ Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ amdPrefix == null || amdPrefix == "pdfaid"
+
+ Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ amdPrefix
+
+
+
+
+
+
+ Property "corr" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ corrPrefix == null || corrPrefix == "pdfaid"
+
+ Property "corr" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ corrPrefix
+
+
+
+
+
+
+ The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true
+ Marked == true
+
+ MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or is not present in the MarkInfo dictionary (MarkInfo = %1, Marked = %2)
+
+ MarkInfo
+ Marked
+
+
+
+
+
+
+
+
+ The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7
+ StructTreeRoot_size == 1
+
+ StructTreeRoot entry is not present in the document catalog
+
+
+
+
+
+
+
+
+ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root
+ isNotMappedToStandardType == false
+
+ Non-standard structure type %1 is not mapped to a standard type
+
+ valueS
+
+
+
+
+
+
+
+
+ A circular mapping shall not exist
+ circularMappingExist != true
+
+ A circular mapping exists for %1 structure type
+
+ valueS
+
+
+
+
+
+
+
+
+ Standard tags shall not be remapped to a non-standard type
+ remappedStandardType == null
+
+ The standard structure type %1 is remapped to a non-standard type
+
+ remappedStandardType
+
+
+
+
+
+
+
+
+ If the Lang entry is present in the document's Catalog dictionary or in a structure element dictionary or property list, its value shall be a language identifier as described in ISO 32000-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages
+ unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue)
+
+ Value %1 of the Lang entry is not a Language-Tag
+
+ unicodeValue
+
+
+
+
+
+
+
+
+
+ The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. If the MIME type is not known, the "application/octet-stream" shall be used
+ Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype)
+
+ MIME type %1 of an embedded file is missing or invalid
+
+ Subtype
+
+
+
+
+
+
+ The file specification dictionary for an embedded file shall contain the F and UF keys
+ containsEF == false || (F != null && UF != null)
+
+ The file specification dictionary for an embedded file does not contain either F or UF key (F = %1, UF = %2)
+
+ F
+ UF
+
+
+
+
+
+
+ The file specification dictionary shall contain key AFRelationship of type Name identifying the relationship between the embedded file and the content of the document
+ AFRelationship != null
+
+ The file specification dictionary for an embedded file does not contain the AFRelationship key or it has invalid value type
+
+
+
+
+
+
+ The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship between the embedded file and the PDF document or the part of the PDF document with which it is associated
+ isAssociatedFile == true
+
+ The file specification dictionary for an embedded file is not associated with the PDF document or any of its parts
+
+
+
+
+
+
+ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key
+ Name != null && Name.length() > 0
+
+ Missing or empty Name entry of the optional content configuration dictionary
+
+
+
+
+
+
+ Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-3 file
+ hasDuplicateName == false
+
+ Optional content configuration dictionary has duplicated name %1
+
+ Name
+
+
+
+
+
+
+ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file
+ OCGsNotContainedInOrder == null
+
+ Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary
+
+ OCGsNotContainedInOrder
+
+
+
+
+
+
+ The AS key shall not appear in any optional content configuration dictionary
+ AS == null
+
+ AS key is present in the optional content configuration dictionary
+
+
+
+
+
+
+ There shall be no AlternatePresentations entry in the document's name dictionary
+ containsAlternatePresentations == false
+
+ The document's name dictionary contains the AlternatePresentations entry
+
+
+
+
+
+
+ There shall be no PresSteps entry in any Page dictionary
+ containsPresSteps == false
+
+ A Page dictionary contains the PresSteps entry
+
+
+
+
+
+
+ The document catalog shall not contain the Requirements key
+ Requirements == null
+
+ The document catalog contains the Requirements key
+
+
+
+
+
+
+
+ null
+ S == "GTS_PDFA1" ? colorSpace : gOutputCS
+
+
+
diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml
new file mode 100644
index 00000000..bac86a9e
--- /dev/null
+++ b/PDF_A/PDFA-3B.xml
@@ -0,0 +1,1784 @@
+
+
+
+ PDF/A-3B validation profile
+ Validation rules against ISO 19005-3:2012, Level B
+
+
+
+
+
+ The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h)
+ headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header)
+
+ File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, where 'n' is a single digit number between 0 and 7
+
+ header
+ headerOffset
+
+
+
+
+
+
+ The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127
+ headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
+
+ Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4)
+
+ headerByte1
+ headerByte2
+ headerByte3
+ headerByte4
+
+
+
+
+
+
+ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4
+ lastID != null && lastID.length() > 0
+
+ Missing or empty ID in the document trailer
+
+
+
+
+
+
+
+
+ The keyword Encrypt shall not be used in the trailer dictionary
+ isEncrypted != true
+
+ Encrypt keyword is present in the trailer dictionary
+
+
+
+
+
+
+ No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5
+ postEOFDataSize == 0
+
+ %1 byte(s) of data is present after the last end-of-file marker
+
+ postEOFDataSize
+
+
+
+
+
+
+
+
+ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker
+ xrefEOLMarkersComplyPDFA
+
+ Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table
+
+
+
+
+
+
+ Hexadecimal strings shall contain an even number of non-white-space characters
+ (isHex != true) || hexCount % 2 == 0
+
+ A hexadecimal string contains odd number (%1) of non-white-space characters
+
+ hexCount
+
+
+
+
+
+
+ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)
+ (isHex != true) || containsOnlyHex == true
+
+ Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f
+
+
+
+
+
+
+ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword
+ Length == realLength
+
+ Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s))
+
+ realLength
+ Length
+
+
+
+
+
+
+ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker
+ streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true
+
+ Extra spacings or missing EOL characters around keywords 'stream' and 'endstream'
+
+
+
+
+
+
+ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys
+ F == null && FFilter == null && FDecodeParms == null
+
+ A stream object dictionary contains %1 key(s)
+
+ keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString()
+
+
+
+
+
+
+ All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be used
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || (internalRepresentation == "Crypt" && decodeParms == "Identity")
+
+ Unknown or not permitted Stream filter %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+ Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences
+ isValidUtf8 == true
+
+ The name value %1 does not represent a correct UTF-8 character sequence
+
+ unicodeValue
+
+
+
+
+
+
+
+
+ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker
+ spacingCompliesPDFA
+
+ Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj'
+
+
+
+
+
+
+ The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || internalRepresentation == "CCF" || internalRepresentation == "DCT"
+
+ Inline image uses not permitted or unknown filter %1
+
+ internalRepresentation
+
+
+
+
+
+
+ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258)
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == ''
+
+ The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP
+
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString()
+
+
+
+
+
+
+
+
+ If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue
+ permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').length == 0
+
+ The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary
+
+ entries.split('&').filter(elem => elem == 'DigestLocation' ||
+ elem == 'DigestMethod' || elem == 'DigestValue').toString()
+
+
+
+
+
+
+
+
+ A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648
+ (intValue <= 2147483647) && (intValue >= -2147483648)
+
+ Integer value %1 out of range
+
+ intValue
+
+
+
+
+
+
+ A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38
+ (realValue >= -3.403e+38) && (realValue <= 3.403e+38)
+
+ Real value %1 out of range
+
+ realValue
+
+
+
+
+
+
+ A conforming file shall not contain any string longer than 32767 bytes
+ value.length() < 32768
+
+ String length (%1) exceeded 32767
+
+ value.length()
+
+
+
+
+
+
+ A conforming file shall not contain any name longer than 127 bytes
+ internalRepresentation.length() <= 127
+
+ Name length (%1) exceeded 127
+
+ internalRepresentation.length()
+
+
+
+
+
+
+ A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38)
+ realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38)
+
+ Non-zero real value %1 is too close to 0.0
+
+ realValue
+
+
+
+
+
+
+ A conforming file shall not contain more than 8388607 indirect objects
+ nrIndirects <= 8388607
+
+ Number of indirect objects in a PDF file (%1) exceeded 8,388,607
+
+ nrIndirects
+
+
+
+
+
+
+ A conforming file shall not nest q/Q pairs by more than 28 nesting levels
+ nestingLevel <= 28
+
+ Depth of graphics state nesting of q/Q operators (%1) exceeded 28
+
+ nestingLevel
+
+
+
+
+
+
+ A conforming file shall not contain a DeviceN colour space with more than 32 colourants
+ nrComponents <= 32
+
+ Number of DeviceN components (%1) exceeded 32
+
+ nrComponents
+
+
+
+
+
+
+ A conforming file shall not contain a CID value greater than 65535
+ maximalCID <= 65535
+
+ Value of a CID (%1) exceeded 65,535
+
+ maximalCID
+
+
+
+
+
+
+ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction
+ Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400
+
+ One of the page boundaries is out of range (valid range: 3 - 14400, height = %1, width = %2)
+
+ Math.abs(top - bottom)
+ Math.abs(right - left)
+
+
+
+
+
+
+ Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators
+ false
+
+ A content stream contains operator %1 not defined in ISO 32000-1
+
+ name
+
+
+
+
+
+
+ A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3
+ inheritedResourceNames == ''
+
+ A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary
+
+ inheritedResourceNames
+
+
+
+
+
+
+
+
+ The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK"
+ (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0
+
+ The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3)
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream
+ sameOutputProfileIndirect == true
+
+ File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1)
+
+ outputProfileIndirects
+
+
+
+
+
+
+ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent
+ S != 'GTS_PDFX' || containsDestOutputProfileRef == false
+
+ The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef
+
+
+
+
+
+
+
+
+ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1
+ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0
+
+ The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both
+ overprintFlag == false || OPM == 0
+
+ Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting
+
+ OPM
+
+
+
+
+
+
+
+
+ DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile
+ gOutputCS != null && gOutputCS == "RGB "
+
+ DeviceRGB colour space is used without RGB output intent profile
+
+
+
+
+
+
+ DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile
+ gOutputCS != null && gOutputCS == "CMYK"
+
+ DeviceCMYK colour space is used without CMYK output intent profile
+
+
+
+
+
+
+ DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present
+ gOutputCS != null
+
+ DeviceGray colour space is used without output intent profile
+
+
+
+
+
+
+ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present
+ areColorantsPresent == true
+
+ A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary
+
+
+
+
+
+
+
+
+ All Separation arrays within a single PDF/A-3 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored
+ areTintAndAlternateConsistent == true
+
+ Several occurrences of a Separation colour space with the same name are not consistent
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR key
+ TR == null
+
+ An ExtGState dictionary contains the TR key
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR2 key with a value other than Default
+ TR2 == null || TR2 == "Default"
+
+ An ExtGState dictionary contains the TR2 key with value %1 other than Default
+
+ TR2
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the HTP key
+ containsHTP == false
+
+ An ExtGState dictionary contains the HTP key
+
+
+
+
+
+
+ All halftones in a conforming PDF/A-3 file shall have the value 1 or 5 for the HalftoneType key
+ HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5)
+
+ A Halftone has type %1 instead of 1 or 5
+
+ HalftoneType
+
+
+
+
+
+
+ Halftones in a conforming PDF/A-3 file shall not contain a HalftoneName key
+ HalftoneName == null
+
+ A Halftone dictionary contains the HalftoneName key
+
+
+
+
+
+
+ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1
+ colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null)
+
+ Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants
+
+
+
+
+
+
+
+
+ Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation
+ internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation"
+
+ A rendering intent with non-standard value %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+ An Image dictionary shall not contain the Alternates key
+ containsAlternates == false
+
+ Alternates key is present in the Image dictionary
+
+
+
+
+
+
+ An Image dictionary shall not contain the OPI key
+ containsOPI == false
+
+ OPI key is present in the Image dictionary
+
+
+
+
+
+
+ If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false
+ Interpolate == false
+
+ The value of the Interpolate key in the Image dictionary is true
+
+
+
+
+
+
+ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16
+ BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 || BitsPerComponent == 16
+
+ The value of the BitsPerComponent key in the Image dictionary is %1
+
+ BitsPerComponent
+
+
+
+
+
+
+
+
+ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4
+ nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4
+
+ JPEG2000 image has %1 colour channels that is neither 1, 3 or 4
+
+ nrColorChannels
+
+
+
+
+
+
+ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field
+ hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1
+
+ The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field)
+
+ nrColorSpacesWithApproxField
+
+
+
+
+
+
+ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications
+ hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3
+
+ Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03
+
+ colrMethod
+
+
+
+
+
+
+ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used
+ hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19
+
+ JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A
+
+
+
+
+
+
+ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth
+ bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38)
+
+ JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2)
+
+ bpccBoxPresent
+ bitDepth
+
+
+
+
+
+
+ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key
+ (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false
+
+ The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key
+
+
+
+
+
+
+ A conforming file shall not contain any reference XObjects
+ containsRef == false
+
+ The document contains a reference XObject (Ref key in the form XObject dictionary)
+
+
+
+
+
+
+ A conforming file shall not contain any PostScript XObjects
+ Subtype != "PS"
+
+ The document contains a PostScript XObject
+
+
+
+
+
+
+ Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary
+ internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity"
+
+ The document uses the blend mode %1 not defined in ISO 32000-1:2008
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space
+ gOutputCS != null || containsGroupCS == true || containsTransparency == false
+
+ The page contains transparent objects with no blending colour space defined
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary
+ Type == "Font"
+
+ A Font dictionary has value %1 of Type entry instead of Font
+
+ Type
+
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts
+ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
+
+ Invalid Subtype entry in font dictionary with value %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font
+ Subtype == "Type3" || fontName != null
+
+ A BaseFont entry is missing or has invalid type
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array
+ isStandard == true || FirstChar != null
+
+ A non-standard simple font dictionary has missing or invalid FirstChar entry
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array
+ isStandard == true || LastChar != null
+
+ A non-standard simple font dictionary has missing or invalid LastChar entry
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths
+ isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
+
+ Widths array is missing or has invalid size %1 instead of %2
+
+ Widths_size
+ LastChar - FirstChar + 1
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4
+ fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType"
+
+ Unsupported font file format %1 of the embedded font
+
+ fontFileSubtype
+
+
+
+
+
+
+
+
+
+
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary shall have the following relationship: - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement)
+
+ CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+ CIDFontSupplement
+ CMapSupplement
+
+
+
+
+
+
+ ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-1:2008, 9.7.4, Table 117
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+ All CMaps used within a PDF/A-3 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1
+
+ A non-standard CMap %1 is not embedded
+
+ CMapName
+
+
+
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V"
+
+ A CMap references another non-standard CMap %1
+
+ CMapName
+
+
+
+
+
+
+
+
+ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true
+
+ A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program
+
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true
+
+ A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset
+
+
+
+
+
+
+ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out
+ isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0)
+
+ The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries
+
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the dictionary that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic TrueType fonts shall not define a Differences array unless all of the glyph names in the Differences array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft Unicode (3,1 – Platform ID = 3, Encoding ID = 1) encoding in the 'cmap' table
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+ The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding
+ isSymbolic == false || nrCmaps == 1 || cmap30Present == true
+
+ The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0)
+
+ nrCmaps
+
+
+
+
+
+
+ A PDF/A-3 compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators, regardless of text rendering mode, in any content stream
+ name != ".notdef"
+
+ The document contains a reference to the .notdef glyph
+
+
+
+
+
+
+ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted
+ Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact"
+
+ Unknown or not permitted Annotation type %1
+
+ Subtype
+
+
+
+
+
+
+
+
+ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key
+ Subtype == "Popup" || F != null
+
+ A dictionary of %1 annotation does not contain F key
+
+ Subtype
+
+
+
+
+
+
+ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0
+ F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0)
+
+ Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6)
+
+ F
+ (F & 4) >> 2
+ (F & 2) >> 1
+ (F & 1)
+ (F & 32) >> 5
+ (F & 256) >> 8
+
+
+
+
+
+
+ Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link
+ (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null
+
+ An annotation does not contain an appearance dictionary
+
+
+
+
+
+
+ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key
+ AP == null || AP == "N"
+
+ Annotation's appearance dictionary contains entries %1 other than N
+
+ AP.split('&').filter(elem => elem != 'N').toString()
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary
+ AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0)
+
+ An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary
+
+ N_type
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
+ AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream"
+
+ An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream
+
+ Subtype
+ FT
+
+
+
+
+
+
+ A Widget annotation dictionary shall not contain the A or AA keys
+ containsA == false && containsAA == false
+
+ A Widget annotation contains %1 key(s)
+
+ entries.split('&').filter(elem => elem == 'A' || elem == 'AA').toString()
+
+
+
+
+
+
+ A Field dictionary shall not contain the A or AA keys
+ containsAA == false
+
+ A Form field dictionary contains the AA entry
+
+
+
+
+
+
+ The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
+ NeedAppearances == null || NeedAppearances == false
+
+ The interactive form dictionary contains the NeedAppearances flag with value true
+
+
+
+
+
+
+ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-3 file, if present, shall not contain the XFA key
+ containsXFA == false
+
+ The interactive form dictionary contains the XFA key
+
+
+
+
+
+
+ A document's Catalog shall not contain the NeedsRendering key
+ NeedsRendering == false
+
+ A document's Catalog contains NeedsRendering flag set to true
+
+
+
+
+
+
+ When computing the digest for the file, it shall be computed over the entire file, including the signature dictionary but excluding the PDF Signature itself
+ doesByteRangeCoverEntireDocument == true
+
+ ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself)
+
+
+
+
+
+
+
+
+
+ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, it shall include the signer's X.509 signing certificate
+ signingCertificatePresent == true
+
+ The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate
+
+
+
+
+
+
+
+
+
+ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature
+ SignerInfoCount == 1
+
+ The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 signer(s) in the PDF Signature instead of one
+
+ SignerInfoCount
+
+
+
+
+
+
+
+
+
+ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted
+ S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"
+
+ Unknown or not permitted Action type %1
+
+ S
+
+
+
+
+
+
+
+
+ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
+ N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
+
+ Unknown or not permitted named action %1
+
+ N
+
+
+
+
+
+
+
+
+ The document's Catalog shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ The document catalog dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+ The Page dictionary shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ The Page dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+ The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2
+ metadata_size == 1
+
+ The document catalog dictionary doesn't contain metadata key
+
+
+
+
+
+
+
+
+ The bytes attribute shall not be used in the header of an XMP packet
+ bytes == null
+
+ The XMP Package contains bytes attribute
+
+
+
+
+
+
+ The encoding attribute shall not be used in the header of an XMP packet
+ encoding == null
+
+ The XMP Package contains encoding attribute
+
+
+
+
+
+
+ All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised)
+ isSerializationValid
+
+ A metadata stream is serialized incorrectly and can not be parsed
+
+
+
+
+
+
+
+
+
+
+ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8
+ actualEncoding == "UTF-8"
+
+ The XMP package uses encoding %1 different from UTF-8
+
+ actualEncoding
+
+
+
+
+
+
+
+
+ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2
+ isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true
+
+ XMP property is either not predefined, or is not defined in any XMP extension schema
+
+
+
+
+
+
+ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2
+ isValueTypeCorrect == true
+
+ XMP property does not correspond to type %1
+
+ predefinedType
+
+
+
+
+
+
+ Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema
+ containsUndefinedFields == false
+
+ An extension schema object contains field(s) %1 not defined by the specification
+
+ undefinedFields
+
+
+
+
+
+
+ The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas
+ isValidBag == true && prefix == "pdfaExtension"
+
+ The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix 'pdfaExtension' (prefix = %2)
+
+ isValidBag
+ prefix
+
+
+
+
+
+
+ Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema'
+ isSchemaValidText == true && schemaPrefix == "pdfaSchema"
+
+ Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2)
+
+ schemaPrefix
+ isSchemaValidText
+
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaSchema'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema"
+
+ Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+ Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema'
+ isPrefixValidText == true && prefixPrefix == "pdfaSchema"
+
+ Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+ Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq Property and namespace prefix 'pdfaSchema'
+ isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema")
+
+ Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2)
+
+ propertyPrefix
+ isPropertyValidSeq
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq ValueType and namespace prefix 'pdfaSchema'
+ isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema")
+
+ Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2)
+
+ valueTypePrefix
+ isValueTypeValidSeq
+
+
+
+
+
+
+ Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'
+ isNameValidText == true && namePrefix == "pdfaProperty"
+
+ Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty"
+
+ Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+ Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'
+ isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty"
+
+ Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or has value different from external or internal (category value = %3)
+
+ categoryPrefix
+ isCategoryValidText
+ category
+
+
+
+
+
+
+ Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaProperty"
+
+ Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isTypeValidText == true && typePrefix == "pdfaType"
+
+ Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2)
+
+ typePrefix
+ isTypeValidText
+
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaType'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType"
+
+ Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+ Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isPrefixValidText == true && prefixPrefix == "pdfaType"
+
+ Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+ Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaType"
+
+ Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type Seq Field and namespace prefix 'pdfaType'
+ isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType")
+
+ Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2)
+
+ fieldPrefix
+ isFieldValidSeq
+
+
+
+
+
+
+ Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'
+ isNameValidText == true && namePrefix == "pdfaField"
+
+ Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField"
+
+ Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+ Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaField"
+
+ Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema
+ Identification_size == 1
+
+ The document metadata stream doesn't contains PDF/A Identification Schema
+
+
+
+
+
+
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+ part == 3
+
+ The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file
+
+ part
+
+
+
+
+
+
+ A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U
+ conformance == "B" || conformance == "U" || conformance == "A"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-3B conforming file
+
+ conformance
+
+
+
+
+
+
+ Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ partPrefix == null || partPrefix == "pdfaid"
+
+ Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+ Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ conformancePrefix == null || conformancePrefix == "pdfaid"
+
+ Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ conformancePrefix
+
+
+
+
+
+
+ Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ amdPrefix == null || amdPrefix == "pdfaid"
+
+ Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ amdPrefix
+
+
+
+
+
+
+ Property "corr" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ corrPrefix == null || corrPrefix == "pdfaid"
+
+ Property "corr" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ corrPrefix
+
+
+
+
+
+
+ The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. If the MIME type is not known, the "application/octet-stream" shall be used
+ Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype)
+
+ MIME type %1 of an embedded file is missing or invalid
+
+ Subtype
+
+
+
+
+
+
+ The file specification dictionary for an embedded file shall contain the F and UF keys
+ containsEF == false || (F != null && UF != null)
+
+ The file specification dictionary for an embedded file does not contain either F or UF key (F = %1, UF = %2)
+
+ F
+ UF
+
+
+
+
+
+
+ The file specification dictionary shall contain key AFRelationship of type Name identifying the relationship between the embedded file and the content of the document
+ AFRelationship != null
+
+ The file specification dictionary for an embedded file does not contain the AFRelationship key or it has invalid value type
+
+
+
+
+
+
+ The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship between the embedded file and the PDF document or the part of the PDF document with which it is associated
+ isAssociatedFile == true
+
+ The file specification dictionary for an embedded file is not associated with the PDF document or any of its parts
+
+
+
+
+
+
+ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key
+ Name != null && Name.length() > 0
+
+ Missing or empty Name entry of the optional content configuration dictionary
+
+
+
+
+
+
+ Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-3 file
+ hasDuplicateName == false
+
+ Optional content configuration dictionary has duplicated name %1
+
+ Name
+
+
+
+
+
+
+ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file
+ OCGsNotContainedInOrder == null
+
+ Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary
+
+ OCGsNotContainedInOrder
+
+
+
+
+
+
+ The AS key shall not appear in any optional content configuration dictionary
+ AS == null
+
+ AS key is present in the optional content configuration dictionary
+
+
+
+
+
+
+ There shall be no AlternatePresentations entry in the document's name dictionary
+ containsAlternatePresentations == false
+
+ The document's name dictionary contains the AlternatePresentations entry
+
+
+
+
+
+
+ There shall be no PresSteps entry in any Page dictionary
+ containsPresSteps == false
+
+ A Page dictionary contains the PresSteps entry
+
+
+
+
+
+
+ The document catalog shall not contain the Requirements key
+ Requirements == null
+
+ The document catalog contains the Requirements key
+
+
+
+
+
+
+
+ null
+ S == "GTS_PDFA1" ? colorSpace : gOutputCS
+
+
+
diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml
new file mode 100644
index 00000000..58708227
--- /dev/null
+++ b/PDF_A/PDFA-3U.xml
@@ -0,0 +1,1806 @@
+
+
+
+ PDF/A-3U validation profile
+ Validation rules against ISO 19005-3:2012, Level U
+
+
+
+
+
+ The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h)
+ headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header)
+
+ File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, where 'n' is a single digit number between 0 and 7
+
+ header
+ headerOffset
+
+
+
+
+
+
+ The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127
+ headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
+
+ Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4)
+
+ headerByte1
+ headerByte2
+ headerByte3
+ headerByte4
+
+
+
+
+
+
+ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4
+ lastID != null && lastID.length() > 0
+
+ Missing or empty ID in the document trailer
+
+
+
+
+
+
+
+
+ The keyword Encrypt shall not be used in the trailer dictionary
+ isEncrypted != true
+
+ Encrypt keyword is present in the trailer dictionary
+
+
+
+
+
+
+ No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5
+ postEOFDataSize == 0
+
+ %1 byte(s) of data is present after the last end-of-file marker
+
+ postEOFDataSize
+
+
+
+
+
+
+
+
+ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker
+ xrefEOLMarkersComplyPDFA
+
+ Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table
+
+
+
+
+
+
+ Hexadecimal strings shall contain an even number of non-white-space characters
+ (isHex != true) || hexCount % 2 == 0
+
+ A hexadecimal string contains odd number (%1) of non-white-space characters
+
+ hexCount
+
+
+
+
+
+
+ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)
+ (isHex != true) || containsOnlyHex == true
+
+ Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f
+
+
+
+
+
+
+ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword
+ Length == realLength
+
+ Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s))
+
+ realLength
+ Length
+
+
+
+
+
+
+ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker
+ streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true
+
+ Extra spacings or missing EOL characters around keywords 'stream' and 'endstream'
+
+
+
+
+
+
+ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys
+ F == null && FFilter == null && FDecodeParms == null
+
+ A stream object dictionary contains %1 key(s)
+
+ keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString()
+
+
+
+
+
+
+ All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be used
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || (internalRepresentation == "Crypt" && decodeParms == "Identity")
+
+ Unknown or not permitted Stream filter %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+ Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences
+ isValidUtf8 == true
+
+ The name value %1 does not represent a correct UTF-8 character sequence
+
+ unicodeValue
+
+
+
+
+
+
+
+
+ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker
+ spacingCompliesPDFA
+
+ Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj'
+
+
+
+
+
+
+ The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || internalRepresentation == "CCF" || internalRepresentation == "DCT"
+
+ Inline image uses not permitted or unknown filter %1
+
+ internalRepresentation
+
+
+
+
+
+
+ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258)
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == ''
+
+ The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP
+
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString()
+
+
+
+
+
+
+
+
+ If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue
+ permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').length == 0
+
+ The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary
+
+ entries.split('&').filter(elem => elem == 'DigestLocation' ||
+ elem == 'DigestMethod' || elem == 'DigestValue').toString()
+
+
+
+
+
+
+
+
+ A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648
+ (intValue <= 2147483647) && (intValue >= -2147483648)
+
+ Integer value %1 out of range
+
+ intValue
+
+
+
+
+
+
+ A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38
+ (realValue >= -3.403e+38) && (realValue <= 3.403e+38)
+
+ Real value %1 out of range
+
+ realValue
+
+
+
+
+
+
+ A conforming file shall not contain any string longer than 32767 bytes
+ value.length() < 32768
+
+ String length (%1) exceeded 32767
+
+ value.length()
+
+
+
+
+
+
+ A conforming file shall not contain any name longer than 127 bytes
+ internalRepresentation.length() <= 127
+
+ Name length (%1) exceeded 127
+
+ internalRepresentation.length()
+
+
+
+
+
+
+ A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38)
+ realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38)
+
+ Non-zero real value %1 is too close to 0.0
+
+ realValue
+
+
+
+
+
+
+ A conforming file shall not contain more than 8388607 indirect objects
+ nrIndirects <= 8388607
+
+ Number of indirect objects in a PDF file (%1) exceeded 8,388,607
+
+ nrIndirects
+
+
+
+
+
+
+ A conforming file shall not nest q/Q pairs by more than 28 nesting levels
+ nestingLevel <= 28
+
+ Depth of graphics state nesting of q/Q operators (%1) exceeded 28
+
+ nestingLevel
+
+
+
+
+
+
+ A conforming file shall not contain a DeviceN colour space with more than 32 colourants
+ nrComponents <= 32
+
+ Number of DeviceN components (%1) exceeded 32
+
+ nrComponents
+
+
+
+
+
+
+ A conforming file shall not contain a CID value greater than 65535
+ maximalCID <= 65535
+
+ Value of a CID (%1) exceeded 65,535
+
+ maximalCID
+
+
+
+
+
+
+ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction
+ Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400
+
+ One of the page boundaries is out of range (valid range: 3 - 14400, height = %1, width = %2)
+
+ Math.abs(top - bottom)
+ Math.abs(right - left)
+
+
+
+
+
+
+ Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators
+ false
+
+ A content stream contains operator %1 not defined in ISO 32000-1
+
+ name
+
+
+
+
+
+
+ A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3
+ inheritedResourceNames == ''
+
+ A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary
+
+ inheritedResourceNames
+
+
+
+
+
+
+
+
+ The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK"
+ (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0
+
+ The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3)
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream
+ sameOutputProfileIndirect == true
+
+ File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1)
+
+ outputProfileIndirects
+
+
+
+
+
+
+ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent
+ S != 'GTS_PDFX' || containsDestOutputProfileRef == false
+
+ The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef
+
+
+
+
+
+
+
+
+ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1
+ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0
+
+ The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both
+ overprintFlag == false || OPM == 0
+
+ Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting
+
+ OPM
+
+
+
+
+
+
+
+
+ DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile
+ gOutputCS != null && gOutputCS == "RGB "
+
+ DeviceRGB colour space is used without RGB output intent profile
+
+
+
+
+
+
+ DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile
+ gOutputCS != null && gOutputCS == "CMYK"
+
+ DeviceCMYK colour space is used without CMYK output intent profile
+
+
+
+
+
+
+ DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present
+ gOutputCS != null
+
+ DeviceGray colour space is used without output intent profile
+
+
+
+
+
+
+ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present
+ areColorantsPresent == true
+
+ A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary
+
+
+
+
+
+
+
+
+ All Separation arrays within a single PDF/A-3 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored
+ areTintAndAlternateConsistent == true
+
+ Several occurrences of a Separation colour space with the same name are not consistent
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR key
+ TR == null
+
+ An ExtGState dictionary contains the TR key
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the TR2 key with a value other than Default
+ TR2 == null || TR2 == "Default"
+
+ An ExtGState dictionary contains the TR2 key with value %1 other than Default
+
+ TR2
+
+
+
+
+
+
+ An ExtGState dictionary shall not contain the HTP key
+ containsHTP == false
+
+ An ExtGState dictionary contains the HTP key
+
+
+
+
+
+
+ All halftones in a conforming PDF/A-3 file shall have the value 1 or 5 for the HalftoneType key
+ HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5)
+
+ A Halftone has type %1 instead of 1 or 5
+
+ HalftoneType
+
+
+
+
+
+
+ Halftones in a conforming PDF/A-3 file shall not contain a HalftoneName key
+ HalftoneName == null
+
+ A Halftone dictionary contains the HalftoneName key
+
+
+
+
+
+
+ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1
+ colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null)
+
+ Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants
+
+
+
+
+
+
+
+
+ Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation
+ internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation"
+
+ A rendering intent with non-standard value %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+ An Image dictionary shall not contain the Alternates key
+ containsAlternates == false
+
+ Alternates key is present in the Image dictionary
+
+
+
+
+
+
+ An Image dictionary shall not contain the OPI key
+ containsOPI == false
+
+ OPI key is present in the Image dictionary
+
+
+
+
+
+
+ If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false
+ Interpolate == false
+
+ The value of the Interpolate key in the Image dictionary is true
+
+
+
+
+
+
+ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16
+ BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 || BitsPerComponent == 16
+
+ The value of the BitsPerComponent key in the Image dictionary is %1
+
+ BitsPerComponent
+
+
+
+
+
+
+
+
+ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4
+ nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4
+
+ JPEG2000 image has %1 colour channels that is neither 1, 3 or 4
+
+ nrColorChannels
+
+
+
+
+
+
+ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field
+ hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1
+
+ The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field)
+
+ nrColorSpacesWithApproxField
+
+
+
+
+
+
+ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications
+ hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3
+
+ Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03
+
+ colrMethod
+
+
+
+
+
+
+ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used
+ hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19
+
+ JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A
+
+
+
+
+
+
+ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth
+ bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38)
+
+ JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2)
+
+ bpccBoxPresent
+ bitDepth
+
+
+
+
+
+
+ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key
+ (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false
+
+ The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key
+
+
+
+
+
+
+ A conforming file shall not contain any reference XObjects
+ containsRef == false
+
+ The document contains a reference XObject (Ref key in the form XObject dictionary)
+
+
+
+
+
+
+ A conforming file shall not contain any PostScript XObjects
+ Subtype != "PS"
+
+ The document contains a PostScript XObject
+
+
+
+
+
+
+ Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary
+ internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity"
+
+ The document uses the blend mode %1 not defined in ISO 32000-1:2008
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space
+ gOutputCS != null || containsGroupCS == true || containsTransparency == false
+
+ The page contains transparent objects with no blending colour space defined
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary
+ Type == "Font"
+
+ A Font dictionary has value %1 of Type entry instead of Font
+
+ Type
+
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts
+ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
+
+ Invalid Subtype entry in font dictionary with value %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font
+ Subtype == "Type3" || fontName != null
+
+ A BaseFont entry is missing or has invalid type
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array
+ isStandard == true || FirstChar != null
+
+ A non-standard simple font dictionary has missing or invalid FirstChar entry
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array
+ isStandard == true || LastChar != null
+
+ A non-standard simple font dictionary has missing or invalid LastChar entry
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths
+ isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
+
+ Widths array is missing or has invalid size %1 instead of %2
+
+ Widths_size
+ LastChar - FirstChar + 1
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4
+ fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType"
+
+ Unsupported font file format %1 of the embedded font
+
+ fontFileSubtype
+
+
+
+
+
+
+
+
+
+
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary shall have the following relationship: - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement)
+
+ CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+ CIDFontSupplement
+ CMapSupplement
+
+
+
+
+
+
+ ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-1:2008, 9.7.4, Table 117
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+ All CMaps used within a PDF/A-3 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1
+
+ A non-standard CMap %1 is not embedded
+
+ CMapName
+
+
+
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V"
+
+ A CMap references another non-standard CMap %1
+
+ CMapName
+
+
+
+
+
+
+
+
+ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true
+
+ A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program
+
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true
+
+ A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset
+
+
+
+
+
+
+ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out
+ isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0)
+
+ The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries
+
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the dictionary that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic TrueType fonts shall not define a Differences array unless all of the glyph names in the Differences array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft Unicode (3,1 – Platform ID = 3, Encoding ID = 1) encoding in the 'cmap' table
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+ The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding
+ isSymbolic == false || nrCmaps == 1 || cmap30Present == true
+
+ The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0)
+
+ nrCmaps
+
+
+
+
+
+
+ The Font dictionary of all fonts shall define the map of all used character codes to Unicode values, either via a ToUnicode entry, or other mechanisms as defined in ISO 19005-3, 6.2.11.7.2
+ toUnicode != null
+
+ The glyph can not be mapped to Unicode
+
+
+
+
+
+
+
+
+ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE
+ toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1)
+
+ The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard
+
+
+
+
+
+
+ A PDF/A-3 compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators, regardless of text rendering mode, in any content stream
+ name != ".notdef"
+
+ The document contains a reference to the .notdef glyph
+
+
+
+
+
+
+ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted
+ Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact"
+
+ Unknown or not permitted Annotation type %1
+
+ Subtype
+
+
+
+
+
+
+
+
+ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key
+ Subtype == "Popup" || F != null
+
+ A dictionary of %1 annotation does not contain F key
+
+ Subtype
+
+
+
+
+
+
+ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0
+ F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0)
+
+ Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6)
+
+ F
+ (F & 4) >> 2
+ (F & 2) >> 1
+ (F & 1)
+ (F & 32) >> 5
+ (F & 256) >> 8
+
+
+
+
+
+
+ Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link
+ (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null
+
+ An annotation does not contain an appearance dictionary
+
+
+
+
+
+
+ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key
+ AP == null || AP == "N"
+
+ Annotation's appearance dictionary contains entries %1 other than N
+
+ AP.split('&').filter(elem => elem != 'N').toString()
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary
+ AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0)
+
+ An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary
+
+ N_type
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
+ AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream"
+
+ An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream
+
+ Subtype
+ FT
+
+
+
+
+
+
+ A Widget annotation dictionary shall not contain the A or AA keys
+ containsA == false && containsAA == false
+
+ A Widget annotation contains %1 key(s)
+
+ entries.split('&').filter(elem => elem == 'A' || elem == 'AA').toString()
+
+
+
+
+
+
+ A Field dictionary shall not contain the A or AA keys
+ containsAA == false
+
+ A Form field dictionary contains the AA entry
+
+
+
+
+
+
+ The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
+ NeedAppearances == null || NeedAppearances == false
+
+ The interactive form dictionary contains the NeedAppearances flag with value true
+
+
+
+
+
+
+ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-3 file, if present, shall not contain the XFA key
+ containsXFA == false
+
+ The interactive form dictionary contains the XFA key
+
+
+
+
+
+
+ A document's Catalog shall not contain the NeedsRendering key
+ NeedsRendering == false
+
+ A document's Catalog contains NeedsRendering flag set to true
+
+
+
+
+
+
+ When computing the digest for the file, it shall be computed over the entire file, including the signature dictionary but excluding the PDF Signature itself
+ doesByteRangeCoverEntireDocument == true
+
+ ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself)
+
+
+
+
+
+
+
+
+
+ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, it shall include the signer's X.509 signing certificate
+ signingCertificatePresent == true
+
+ The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate
+
+
+
+
+
+
+
+
+
+ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature
+ SignerInfoCount == 1
+
+ The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 signer(s) in the PDF Signature instead of one
+
+ SignerInfoCount
+
+
+
+
+
+
+
+
+
+ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted
+ S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"
+
+ Unknown or not permitted Action type %1
+
+ S
+
+
+
+
+
+
+
+
+ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
+ N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
+
+ Unknown or not permitted named action %1
+
+ N
+
+
+
+
+
+
+
+
+ The document's Catalog shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ The document catalog dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+ The Page dictionary shall not include an AA entry for an additional-actions dictionary
+ containsAA == false
+
+ The Page dictionary contains an additional-actions dictionary (AA entry)
+
+
+
+
+
+
+ The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2
+ metadata_size == 1
+
+ The document catalog dictionary doesn't contain metadata key
+
+
+
+
+
+
+
+
+ The bytes attribute shall not be used in the header of an XMP packet
+ bytes == null
+
+ The XMP Package contains bytes attribute
+
+
+
+
+
+
+ The encoding attribute shall not be used in the header of an XMP packet
+ encoding == null
+
+ The XMP Package contains encoding attribute
+
+
+
+
+
+
+ All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised)
+ isSerializationValid
+
+ A metadata stream is serialized incorrectly and can not be parsed
+
+
+
+
+
+
+
+
+
+
+ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8
+ actualEncoding == "UTF-8"
+
+ The XMP package uses encoding %1 different from UTF-8
+
+ actualEncoding
+
+
+
+
+
+
+
+
+ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2
+ isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true
+
+ XMP property is either not predefined, or is not defined in any XMP extension schema
+
+
+
+
+
+
+ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2
+ isValueTypeCorrect == true
+
+ XMP property does not correspond to type %1
+
+ predefinedType
+
+
+
+
+
+
+ Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema
+ containsUndefinedFields == false
+
+ An extension schema object contains field(s) %1 not defined by the specification
+
+ undefinedFields
+
+
+
+
+
+
+ The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas
+ isValidBag == true && prefix == "pdfaExtension"
+
+ The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix 'pdfaExtension' (prefix = %2)
+
+ isValidBag
+ prefix
+
+
+
+
+
+
+ Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema'
+ isSchemaValidText == true && schemaPrefix == "pdfaSchema"
+
+ Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2)
+
+ schemaPrefix
+ isSchemaValidText
+
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaSchema'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema"
+
+ Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+ Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema'
+ isPrefixValidText == true && prefixPrefix == "pdfaSchema"
+
+ Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+ Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq Property and namespace prefix 'pdfaSchema'
+ isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema")
+
+ Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2)
+
+ propertyPrefix
+ isPropertyValidSeq
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq ValueType and namespace prefix 'pdfaSchema'
+ isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema")
+
+ Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2)
+
+ valueTypePrefix
+ isValueTypeValidSeq
+
+
+
+
+
+
+ Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'
+ isNameValidText == true && namePrefix == "pdfaProperty"
+
+ Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty"
+
+ Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+ Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'
+ isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty"
+
+ Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or has value different from external or internal (category value = %3)
+
+ categoryPrefix
+ isCategoryValidText
+ category
+
+
+
+
+
+
+ Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaProperty"
+
+ Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isTypeValidText == true && typePrefix == "pdfaType"
+
+ Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2)
+
+ typePrefix
+ isTypeValidText
+
+
+
+
+
+
+ Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaType'
+ isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType"
+
+ Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2)
+
+ namespaceURIPrefix
+ isNamespaceURIValidURI
+
+
+
+
+
+
+ Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isPrefixValidText == true && prefixPrefix == "pdfaType"
+
+ Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2)
+
+ prefixPrefix
+ isPrefixValidText
+
+
+
+
+
+
+ Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaType"
+
+ Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type Seq Field and namespace prefix 'pdfaType'
+ isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType")
+
+ Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2)
+
+ fieldPrefix
+ isFieldValidSeq
+
+
+
+
+
+
+ Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'
+ isNameValidText == true && namePrefix == "pdfaField"
+
+ Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (name prefix = %1) or doesn't have type Text (isNameValidText = %2)
+
+ namePrefix
+ isNameValidText
+
+
+
+
+
+
+ Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined
+ isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField"
+
+ Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3)
+
+ valueTypePrefix
+ isValueTypeValidText
+ isValueTypeDefined
+
+
+
+
+
+
+ Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'
+ isDescriptionValidText == true && descriptionPrefix == "pdfaField"
+
+ Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2)
+
+ descriptionPrefix
+ isDescriptionValidText
+
+
+
+
+
+
+ The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema
+ Identification_size == 1
+
+ The document metadata stream doesn't contains PDF/A Identification Schema
+
+
+
+
+
+
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+ part == 3
+
+ The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file
+
+ part
+
+
+
+
+
+
+ A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
+ conformance == "U" || conformance == "A"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-3U conforming file
+
+ conformance
+
+
+
+
+
+
+ Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ partPrefix == null || partPrefix == "pdfaid"
+
+ Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+ Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ conformancePrefix == null || conformancePrefix == "pdfaid"
+
+ Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ conformancePrefix
+
+
+
+
+
+
+ Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ amdPrefix == null || amdPrefix == "pdfaid"
+
+ Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ amdPrefix
+
+
+
+
+
+
+ Property "corr" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ corrPrefix == null || corrPrefix == "pdfaid"
+
+ Property "corr" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ corrPrefix
+
+
+
+
+
+
+ The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. If the MIME type is not known, the "application/octet-stream" shall be used
+ Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype)
+
+ MIME type %1 of an embedded file is missing or invalid
+
+ Subtype
+
+
+
+
+
+
+ The file specification dictionary for an embedded file shall contain the F and UF keys
+ containsEF == false || (F != null && UF != null)
+
+ The file specification dictionary for an embedded file does not contain either F or UF key (F = %1, UF = %2)
+
+ F
+ UF
+
+
+
+
+
+
+ The file specification dictionary shall contain key AFRelationship of type Name identifying the relationship between the embedded file and the content of the document
+ AFRelationship != null
+
+ The file specification dictionary for an embedded file does not contain the AFRelationship key or it has invalid value type
+
+
+
+
+
+
+ The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship between the embedded file and the PDF document or the part of the PDF document with which it is associated
+ isAssociatedFile == true
+
+ The file specification dictionary for an embedded file is not associated with the PDF document or any of its parts
+
+
+
+
+
+
+ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key
+ Name != null && Name.length() > 0
+
+ Missing or empty Name entry of the optional content configuration dictionary
+
+
+
+
+
+
+ Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-3 file
+ hasDuplicateName == false
+
+ Optional content configuration dictionary has duplicated name %1
+
+ Name
+
+
+
+
+
+
+ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file
+ OCGsNotContainedInOrder == null
+
+ Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary
+
+ OCGsNotContainedInOrder
+
+
+
+
+
+
+ The AS key shall not appear in any optional content configuration dictionary
+ AS == null
+
+ AS key is present in the optional content configuration dictionary
+
+
+
+
+
+
+ There shall be no AlternatePresentations entry in the document's name dictionary
+ containsAlternatePresentations == false
+
+ The document's name dictionary contains the AlternatePresentations entry
+
+
+
+
+
+
+ There shall be no PresSteps entry in any Page dictionary
+ containsPresSteps == false
+
+ A Page dictionary contains the PresSteps entry
+
+
+
+
+
+
+ The document catalog shall not contain the Requirements key
+ Requirements == null
+
+ The document catalog contains the Requirements key
+
+
+
+
+
+
+
+ null
+ S == "GTS_PDFA1" ? colorSpace : gOutputCS
+
+
+
diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml
new file mode 100644
index 00000000..3c7abe4c
--- /dev/null
+++ b/PDF_A/PDFA-4.xml
@@ -0,0 +1,1345 @@
+
+
+
+ PDF/A-4 validation profile
+ Validation rules against ISO 19005-4:2020
+
+
+
+
+
+ The file header shall begin at byte zero and shall consist of "%PDF-2.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 9 (39h)
+ headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header)
+
+ File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-2.n, where 'n' is a single digit number between 0 and 9
+
+ header
+ headerOffset
+
+
+
+
+
+
+ The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127
+ headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
+
+ Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4)
+
+ headerByte1
+ headerByte2
+ headerByte3
+ headerByte4
+
+
+
+
+
+
+ File identifiers shall be defined by the ID entry in a PDF file’s trailer dictionary
+ lastID != null && lastID.length() > 0
+
+ Missing or empty ID in the document trailer
+
+
+
+
+
+
+
+
+ The Encrypt key shall not be present in the trailer dictionary
+ isEncrypted != true
+
+ The Encrypt key is present in the trailer dictionary
+
+
+
+
+
+
+ No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5
+ postEOFDataSize == 0
+
+ %1 byte(s) of data is present after the last end-of-file marker
+
+ postEOFDataSize
+
+
+
+
+
+
+
+
+ The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary
+ containsPieceInfo == true || containsInfo == false
+
+ The Info key present in the trailer dictionary, but PieceInfo entry does not present in the document catalog dictionary
+
+
+
+
+
+
+ If a document information dictionary is present, it shall only contain a ModDate entry
+ size == 1 && ModDate != null
+
+ Document information dictionary is present and contains %1 key(s), but allowed only ModDate
+
+ keysString.split('&').filter(elem => elem != 'ModDate').toString()
+
+
+
+
+
+
+ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker
+ xrefEOLMarkersComplyPDFA
+
+ Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table
+
+
+
+
+
+
+ Hexadecimal strings shall contain an even number of non-white-space characters
+ (isHex != true) || hexCount % 2 == 0
+
+ A hexadecimal string contains odd number (%1) of non-white-space characters
+
+ hexCount
+
+
+
+
+
+
+ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)
+ (isHex != true) || containsOnlyHex == true
+
+ Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f
+
+
+
+
+
+
+ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword
+ Length == realLength
+
+ Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s))
+
+ realLength
+ Length
+
+
+
+
+
+
+ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys
+ F == null && FFilter == null && FDecodeParms == null
+
+ A stream object dictionary contains %1 key(s)
+
+ keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString()
+
+
+
+
+
+
+ All standard stream filters listed in ISO 32000-2:2020, 7.4, Table 6 may be used, with the exception of LZWDecode. Filters that are not listed in ISO 32000-2:2020, 7.4, Table 6 shall not be used. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || (internalRepresentation == "Crypt" && decodeParms == "Identity")
+
+ Unknown or not permitted Stream filter %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+ Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences
+ isValidUtf8 == true
+
+ The name value %1 does not represent a correct UTF-8 character sequence
+
+ unicodeValue
+
+
+
+
+
+
+
+
+ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker
+ spacingCompliesPDFA
+
+ Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj'
+
+
+
+
+
+
+ The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-2:2020, 8.9.7, Table 92, or an array containing any such value
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || internalRepresentation == "CCF" || internalRepresentation == "DCT"
+
+ Inline image uses not permitted or unknown filter %1
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263)
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == ''
+
+ The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP
+
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString()
+
+
+
+
+
+
+
+
+ If the Version key is present in the document catalog dictionary, the first character in its value shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3
+ Version == null || /^2\.[0-9]$/.test(Version)
+
+ The Version key with value %1 does not match the pattern 2.n, where 'n' is a single digit number between 0 and 9
+
+ Version
+
+
+
+
+
+
+ Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed by the BX/EX compatibility operators
+ false
+
+ A content stream contains operator %1 not defined in ISO 32000-2:2020
+
+ name
+
+
+
+
+
+
+ A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources referenced by this content stream
+ inheritedResourceNames == ''
+
+ A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary
+
+ inheritedResourceNames
+
+
+
+
+
+
+
+
+ A content stream's named resources shall be defined by a resource dictionary, which shall enumerate the named resources needed by the operators in the content stream and the names by which they can be referred to
+ undefinedResourceNames == ''
+
+ A content stream references named resource(s) %1 not defined by a resource dictionary
+
+ undefinedResourceNames
+
+
+
+
+
+
+
+
+ The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK"
+ (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0
+
+ The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3)
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ If any OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X or PDF/E, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream
+ sameOutputProfileIndirect == true
+
+ OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1)
+
+ outputProfileIndirects
+
+
+
+
+
+
+ The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary
+ containsDestOutputProfileRef == false
+
+ The output intent dictionary contains forbidden entry DestOutputProfileRef
+
+
+
+
+
+
+
+
+ The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5
+ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0
+
+ The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 2.0 requirements
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both
+ overprintFlag == false || OPM == 0
+
+ Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting
+
+ OPM
+
+
+
+
+
+
+
+
+ An ICCBased colour space shall not be used where the profile is a CMYK destination profile and is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace
+ (ICCProfileIndirect == null || (ICCProfileIndirect != gOutputProfileIndirect && ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5))
+
+ An ICCBased CMYK color space is identical to the current PDF/A OutputIntent color profile or the current transparency blending color space
+
+
+
+
+
+
+ DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used or if the current transparency blending space, when the DeviceRGB colour space is used, is a device independent RGB-based colour space or the current PDF/A OutputIntent, when the DeviceRGB colour space is used, contains an 'RGB ' destination profile
+ (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') || gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB'
+
+ DeviceRGB colour space is used without RGB output intent profile and without current transparency blending space being Device-independent RGB
+
+
+
+
+
+
+ DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or if the current transparency blending space, when the DeviceCMYK colour space is used, is a device independent CMYK-based colour space or the current PDF/A OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile
+ (gPageOutputCS == null ? gDocumentOutputCS == 'CMYK' : gPageOutputCS == 'CMYK') || gTransparencyCS == 'CMYK'
+
+ DeviceCMYK colour space is used without CMYK output intent profile and without current transparency blending space being Device-independent CMYK
+
+
+
+
+
+
+ DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect
+ gPageOutputCS != null || gDocumentOutputCS != null
+
+ DeviceGray colour space is used without output intent profile
+
+
+
+
+
+
+ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present
+ areColorantsPresent == true
+
+ A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary
+
+
+
+
+
+
+
+
+ All Separation arrays within a single conforming PDF/A-4 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored
+ areTintAndAlternateConsistent == true
+
+ Several occurrences of a Separation colour space with the same name are not consistent
+
+
+
+
+
+
+ A graphics state parameter dictionary (ISO 32000-2:2020, 8.4.5) shall not contain the TR key
+ TR == null
+
+ A graphics state parameter dictionary contains the TR key
+
+
+
+
+
+
+
+
+ A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default
+ TR2 == null || TR2 == "Default"
+
+ A graphics state parameter dictionary contains the TR2 key with value %1 other than Default
+
+ TR2
+
+
+
+
+
+
+ A graphics state parameter dictionary shall not contain the HTO key
+ containsHTO == false
+
+ A graphics state parameter dictionary contains the HTO key
+
+
+
+
+
+
+ All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key
+ HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5)
+
+ A Halftone has type %1 instead of 1 or 5
+
+ HalftoneType
+
+
+
+
+
+
+ Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key
+ HalftoneName == null
+
+ A Halftone dictionary contains the HalftoneName key
+
+
+
+
+
+
+ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020
+ colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null)
+
+ Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants
+
+
+
+
+
+
+
+
+ An Image dictionary shall not contain the Alternates key
+ containsAlternates == false
+
+ Alternates key is present in the Image dictionary
+
+
+
+
+
+
+ An Image dictionary shall not contain the OPI key
+ containsOPI == false
+
+ OPI key is present in the Image dictionary
+
+
+
+
+
+
+ If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key, if present, shall have a value of false
+ Interpolate == false
+
+ The value of the Interpolate key in the Image dictionary is true
+
+
+
+
+
+
+ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16
+ BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 || BitsPerComponent == 16
+
+ The value of the BitsPerComponent key in the Image dictionary is %1
+
+ BitsPerComponent
+
+
+
+
+
+
+
+
+ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4
+ nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4
+
+ JPEG2000 image has %1 colour channels that is neither 1, 3 or 4
+
+ nrColorChannels
+
+
+
+
+
+
+ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field
+ hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1
+
+ The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field)
+
+ nrColorSpacesWithApproxField
+
+
+
+
+
+
+ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only that colour space and shall ignore all other colour space specifications
+ hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3
+
+ Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03
+
+ colrMethod
+
+
+
+
+
+
+ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used
+ hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19
+
+ JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A
+
+
+
+
+
+
+ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth
+ bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38)
+
+ JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2)
+
+ bpccBoxPresent
+ bitDepth
+
+
+
+
+
+
+ A form XObject dictionary shall not contain an OPI key
+ containsOPI == false
+
+ The form XObject dictionary contains an OPI key
+
+
+
+
+
+
+ A conforming file shall not contain any reference XObjects
+ containsRef == false
+
+ The document contains a reference XObject (Ref key in the form XObject dictionary)
+
+
+
+
+
+
+ Only blend modes that are specified in ISO 32000-2:2020 shall be used for the value of the BM key in a graphic state dictionary or an annotation dictionary
+ internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity"
+
+ The document uses the blend mode %1 not defined in ISO 32000-2:2020
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+ If the document does not contain a PDF/A output intent, then all pages that contain transparency shall either have a page-level PDF/A output intent or the page dictionary shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space
+ gDocumentOutputCS != null || outputColorSpace != null || containsGroupCS == true || containsTransparency == false
+
+ The page contains transparent objects with no blending colour space defined
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary
+ Type == "Font"
+
+ A Font dictionary has value %1 of Type entry instead of Font
+
+ Type
+
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts
+ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
+
+ Invalid Subtype entry in font dictionary with value %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font
+ Subtype == "Type3" || fontName != null
+
+ A BaseFont entry is missing or has invalid type
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array
+ isStandard == true || FirstChar != null
+
+ A non-standard simple font dictionary has missing or invalid FirstChar entry
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array
+ isStandard == true || LastChar != null
+
+ A non-standard simple font dictionary has missing or invalid LastChar entry
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths
+ isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
+
+ Widths array is missing or has invalid size %1 instead of %2
+
+ Widths_size
+ LastChar - FirstChar + 1
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 2.0 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22
+ fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType"
+
+ Unsupported font file format %1 of the embedded font
+
+ fontFileSubtype
+
+
+
+
+
+
+
+
+
+
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary shall have the following relationship: - If the Encoding key in the Type 0 font dictionary has a value of Identity-H or Identity-V, then any values for the Registry, Ordering, and Supplement keys may be used in the CIDSystemInfo dictionary of the CIDFont. - Otherwise the corresponding values of the Registry and Ordering keys in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement)
+
+ CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+ CIDFontSupplement
+ CMapSupplement
+
+
+
+
+
+
+ ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-2:2020, 9.7.4 Table 115
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+ All CMaps used within a conforming PDF/A-4 file, except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1
+
+ A non-standard CMap %1 is not embedded
+
+ CMapName
+
+
+
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+ A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V"
+
+ A CMap references another non-standard CMap %1
+
+ CMapName
+
+
+
+
+
+
+
+
+ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-2:2020, 9.9
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-2:2020, 9.6.5 without the use of a non-standard mapping chosen by the conforming processor
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
+
+ For every font embedded in a conforming file, the glyph width information in the font dictionary and in the embedded font program shall be consistent for every glyph referenced for rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain at least Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1), or Macintosh Roman (1,0 – Platform ID=1, Encoding ID=0) 'cmap' subtable that all necessary glyph lookups are able to be carried out
+ isSymbolic == true || cmap31Present == true || cmap10Present == true
+
+ The embedded font program for a non-symbolic TrueType font does not contain Microsoft Symbol (3,1 – Platform ID=3, Encoding ID=1) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding
+
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the dictionary which is the value of the Encoding key in the Font dictionary. In addition, no non-symbolic TrueType font shall define a Differences array unless all of the glyph names in the Differences array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' subtable
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+ The 'cmap' subtable in the embedded font program for a symbolic TrueType font shall contain either the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding
+ isSymbolic == false || cmap30Present == true || cmap10Present == true
+
+ The embedded font program for a symbolic TrueType font does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding
+
+
+
+
+
+
+ If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE
+ toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1)
+
+ The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard
+
+
+
+
+
+
+ The ActualText entry shall not contain any PUA values
+ containsPUA == false
+
+ The ActualText entry contains Unicode PUA (Private Use Area) code points
+
+
+
+
+
+
+ A PDF/A-4 compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators, regardless of text rendering mode, in any content stream
+ name != ".notdef"
+
+ The document contains a reference to the .notdef glyph
+
+
+
+
+
+
+ Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. Additionally, the Sound, Screen, Movie, 3D, RichMedia and FileAttachment types shall not be permitted
+ Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" || Subtype == "Projection"
+
+ Unknown or not permitted Annotation type %1
+
+ Subtype
+
+
+
+
+
+
+
+
+ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key
+ Subtype == "Popup" || F != null
+
+ A dictionary of %1 annotation does not contain F key
+
+ Subtype
+
+
+
+
+
+
+ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0
+ F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0)
+
+ Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6)
+
+ F
+ (F & 4) >> 2
+ (F & 2) >> 1
+ (F & 1)
+ (F & 32) >> 5
+ (F & 256) >> 8
+
+
+
+
+
+
+ Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to the value at index 3 and the value at index 2 is equal to the value at index 4; - annotations whose Subtype value is Popup, Link or Projection
+ (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null
+
+ An annotation does not contain an appearance dictionary
+
+
+
+
+
+
+
+
+ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key
+ AP == null || AP == "N"
+
+ Annotation's appearance dictionary contains entries %1 other than N
+
+ AP.split('&').filter(elem => elem != 'N').toString()
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary
+ AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0)
+
+ An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary
+
+ N_type
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
+ AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream"
+
+ An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream
+
+ Subtype
+ FT
+
+
+
+
+
+
+ A Widget annotation dictionary shall not contain the A key
+ containsA == false
+
+ A Widget annotation contains A entry
+
+
+
+
+
+
+ The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
+ NeedAppearances == null || NeedAppearances == false
+
+ The interactive form dictionary contains the NeedAppearances flag with value true
+
+
+
+
+
+
+ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-4 file, if present, shall not contain the XFA key
+ containsXFA == false
+
+ The interactive form dictionary contains the XFA key
+
+
+
+
+
+
+ A document's Catalog shall not contain the NeedsRendering key
+ NeedsRendering == false
+
+ A document's Catalog contains NeedsRendering flag set to true
+
+
+
+
+
+
+ The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and no-op actions shall not be permitted
+ S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp"
+
+ Unknown or not permitted Action type %1
+
+ S
+
+
+
+
+
+
+
+
+ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
+ N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
+
+ Unknown or not permitted named action %1
+
+ N
+
+
+
+
+
+
+
+
+ If a document catalog dictionary or page dictionary or an annotation dictionary (other than a Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) shall only contain keys from the following list: E, X, D, U, Fo, and Bl
+ parentType == 'WidgetAnnot' || parentType == 'FormField' || entries.split('&').filter(elem => elem != 'E' && elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 || entries == ''
+
+ Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, U, Fo, and Bl
+
+ entries.split('&').filter(elem => elem != 'E' && elem != 'X' && elem != 'D' &&
+ elem != 'U' && elem != 'Fo' && elem != 'Bl').toString()
+
+
+
+
+
+
+ The document catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-2:2020, 14.3.2
+ metadata_size == 1
+
+ The document catalog dictionary doesn't contain metadata key
+
+
+
+
+
+
+
+
+ The bytes attribute shall not be used in the header of an XMP packet
+ bytes == null
+
+ The XMP Package contains bytes attribute
+
+
+
+
+
+
+ The encoding attribute shall not be used in the header of an XMP packet
+ encoding == null
+
+ The XMP Package contains encoding attribute
+
+
+
+
+
+
+ All content of all XMP packets located in any metadata stream present in the PDF shall be well-formed as defined by XMP (ISO 16684-1)
+ isSerializationValid
+
+ A metadata stream is serialized incorrectly and can not be parsed
+
+
+
+
+
+
+
+
+ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8
+ actualEncoding == "UTF-8"
+
+ The XMP package uses encoding %1 different from UTF-8
+
+ actualEncoding
+
+
+
+
+
+
+
+
+ The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/"
+ Identification_size == 1
+
+ The document metadata stream doesn't contains PDF/A Identification Schema
+
+
+
+
+
+
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+ part == 4
+
+ The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file
+
+ part
+
+
+
+
+
+
+ A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any "pdfaid:conformance"
+ conformance == null
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of null for PDF/A-4 conforming file
+
+ conformance
+
+
+
+
+
+
+ Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ partPrefix == null || partPrefix == "pdfaid"
+
+ Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+ The value of "pdfaid:rev" shall be the four digit year
+ /^\d{4}$/.test(rev)
+
+ The value of "pdfaid:rev" (%1) is not the four digit year
+
+ rev
+
+
+
+
+
+
+ Property "rev" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ revPrefix == null || revPrefix == "pdfaid"
+
+ Property "rev" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ revPrefix
+
+
+
+
+
+
+ The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. If the MIME type is not known, the value "application/octet-stream" shall be used
+ Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype)
+
+ MIME type %1 of an embedded file is missing or invalid
+
+ Subtype
+
+
+
+
+
+
+
+
+ The file specification dictionary for an embedded file shall contain the F and UF keys
+ containsEF == false || (F != null && UF != null)
+
+ The file specification dictionary for an embedded file does not contain either F or UF key (F = %1, UF = %2)
+
+ F
+ UF
+
+
+
+
+
+
+ All of the embedded files shall be compliant with ISO 19005-1, 19005-2 or 19005-4
+ isValidPDFA124 == true
+
+ An embedded file does not comply to either ISO 19005-1, ISO 19005-2 or ISO 19005-4
+
+
+
+
+
+
+ Each embedded file’s file specification dictionary shall contain an AFRelationship key (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF
+ containsEF == false || AFRelationship != null
+
+ The file specification dictionary for an embedded file does not contain the AFRelationship key
+
+
+
+
+
+
+
+
+ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key
+ Name != null
+
+ Missing Name entry of the optional content configuration dictionary
+
+
+
+
+
+
+ Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-4 file
+ hasDuplicateName == false
+
+ Optional content configuration dictionary has duplicated name %1
+
+ Name
+
+
+
+
+
+
+ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file
+ OCGsNotContainedInOrder == null
+
+ Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary
+
+ OCGsNotContainedInOrder
+
+
+
+
+
+
+ There shall be no AlternatePresentations entry in the document's name dictionary
+ containsAlternatePresentations == false
+
+ The document's name dictionary contains the AlternatePresentations entry
+
+
+
+
+
+
+ There shall be no PresSteps entry in any Page dictionary
+ containsPresSteps == false
+
+ A Page dictionary contains the PresSteps entry
+
+
+
+
+
+
+ The document catalog shall not contain the Requirements key
+ Requirements == null
+
+ The document catalog contains the Requirements key
+
+
+
+
+
+
+
+ null
+ outputColorSpace
+
+
+ null
+ ICCProfileMD5
+
+
+ null
+ destOutputProfileIndirect
+
+
+ null
+ outputColorSpace
+
+
+ null
+ colorSpaceType
+
+
+
diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml
new file mode 100644
index 00000000..411f7fd1
--- /dev/null
+++ b/PDF_A/PDFA-4E.xml
@@ -0,0 +1,1351 @@
+
+
+
+ PDF/A-4E validation profile
+ Validation rules against ISO 19005-4:2020, Level E
+
+
+
+
+
+ The file header shall begin at byte zero and shall consist of "%PDF-2.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 9 (39h)
+ headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header)
+
+ File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-2.n, where 'n' is a single digit number between 0 and 9
+
+ header
+ headerOffset
+
+
+
+
+
+
+ The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127
+ headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
+
+ Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4)
+
+ headerByte1
+ headerByte2
+ headerByte3
+ headerByte4
+
+
+
+
+
+
+ File identifiers shall be defined by the ID entry in a PDF file’s trailer dictionary
+ lastID != null && lastID.length() > 0
+
+ Missing or empty ID in the document trailer
+
+
+
+
+
+
+
+
+ The Encrypt key shall not be present in the trailer dictionary
+ isEncrypted != true
+
+ The Encrypt key is present in the trailer dictionary
+
+
+
+
+
+
+ No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5
+ postEOFDataSize == 0
+
+ %1 byte(s) of data is present after the last end-of-file marker
+
+ postEOFDataSize
+
+
+
+
+
+
+
+
+ The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary
+ containsPieceInfo == true || containsInfo == false
+
+ The Info key present in the trailer dictionary, but PieceInfo entry does not present in the document catalog dictionary
+
+
+
+
+
+
+ If a document information dictionary is present, it shall only contain a ModDate entry
+ size == 1 && ModDate != null
+
+ Document information dictionary is present and contains %1 key(s), but allowed only ModDate
+
+ keysString.split('&').filter(elem => elem != 'ModDate').toString()
+
+
+
+
+
+
+ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker
+ xrefEOLMarkersComplyPDFA
+
+ Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table
+
+
+
+
+
+
+ Hexadecimal strings shall contain an even number of non-white-space characters
+ (isHex != true) || hexCount % 2 == 0
+
+ A hexadecimal string contains odd number (%1) of non-white-space characters
+
+ hexCount
+
+
+
+
+
+
+ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)
+ (isHex != true) || containsOnlyHex == true
+
+ Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f
+
+
+
+
+
+
+ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword
+ Length == realLength
+
+ Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s))
+
+ realLength
+ Length
+
+
+
+
+
+
+ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys
+ F == null && FFilter == null && FDecodeParms == null
+
+ A stream object dictionary contains %1 key(s)
+
+ keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString()
+
+
+
+
+
+
+ The Subtype entry in a 3D stream dictionary (ISO 32000-2:2020, 13.6.3) shall have a value which is either U3D or PRC as described in Annex B
+ Subtype == 'U3D' || Subtype == 'PRC'
+
+ The Subtype entry in the 3D stream dictionary (ISO 32000-2:2020, 13.6.3) has value %1 that is neither U3D nor PRC
+
+ Subtype
+
+
+
+
+
+
+
+
+ All standard stream filters listed in ISO 32000-2:2020, 7.4, Table 6 may be used, with the exception of LZWDecode. Filters that are not listed in ISO 32000-2:2020, 7.4, Table 6 shall not be used. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || (internalRepresentation == "Crypt" && decodeParms == "Identity")
+
+ Unknown or not permitted Stream filter %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+ Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences
+ isValidUtf8 == true
+
+ The name value %1 does not represent a correct UTF-8 character sequence
+
+ unicodeValue
+
+
+
+
+
+
+
+
+ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker
+ spacingCompliesPDFA
+
+ Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj'
+
+
+
+
+
+
+ The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-2:2020, 8.9.7, Table 92, or an array containing any such value
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || internalRepresentation == "CCF" || internalRepresentation == "DCT"
+
+ Inline image uses not permitted or unknown filter %1
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263)
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == ''
+
+ The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP
+
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString()
+
+
+
+
+
+
+
+
+ If the Version key is present in the document catalog dictionary, the first character in its value shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3
+ Version == null || /^2\.[0-9]$/.test(Version)
+
+ The Version key with value %1 does not match the pattern 2.n, where 'n' is a single digit number between 0 and 9
+
+ Version
+
+
+
+
+
+
+ Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed by the BX/EX compatibility operators
+ false
+
+ A content stream contains operator %1 not defined in ISO 32000-2:2020
+
+ name
+
+
+
+
+
+
+ A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources referenced by this content stream
+ inheritedResourceNames == ''
+
+ A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary
+
+ inheritedResourceNames
+
+
+
+
+
+
+
+
+ A content stream's named resources shall be defined by a resource dictionary, which shall enumerate the named resources needed by the operators in the content stream and the names by which they can be referred to
+ undefinedResourceNames == ''
+
+ A content stream references named resource(s) %1 not defined by a resource dictionary
+
+ undefinedResourceNames
+
+
+
+
+
+
+
+
+ The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK"
+ (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0
+
+ The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3)
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ If any OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X or PDF/E, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream
+ sameOutputProfileIndirect == true
+
+ OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1)
+
+ outputProfileIndirects
+
+
+
+
+
+
+ The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary
+ containsDestOutputProfileRef == false
+
+ The output intent dictionary contains forbidden entry DestOutputProfileRef
+
+
+
+
+
+
+
+
+ The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5
+ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0
+
+ The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 2.0 requirements
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both
+ overprintFlag == false || OPM == 0
+
+ Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting
+
+ OPM
+
+
+
+
+
+
+
+
+ An ICCBased colour space shall not be used where the profile is a CMYK destination profile and is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace
+ (ICCProfileIndirect == null || (ICCProfileIndirect != gOutputProfileIndirect && ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5))
+
+ An ICCBased CMYK color space is identical to the current PDF/A OutputIntent color profile or the current transparency blending color space
+
+
+
+
+
+
+ DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used or if the current transparency blending space, when the DeviceRGB colour space is used, is a device independent RGB-based colour space or the current PDF/A OutputIntent, when the DeviceRGB colour space is used, contains an 'RGB ' destination profile
+ (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') || gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB'
+
+ DeviceRGB colour space is used without RGB output intent profile and without current transparency blending space being Device-independent RGB
+
+
+
+
+
+
+ DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or if the current transparency blending space, when the DeviceCMYK colour space is used, is a device independent CMYK-based colour space or the current PDF/A OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile
+ (gPageOutputCS == null ? gDocumentOutputCS == 'CMYK' : gPageOutputCS == 'CMYK') || gTransparencyCS == 'CMYK'
+
+ DeviceCMYK colour space is used without CMYK output intent profile and without current transparency blending space being Device-independent CMYK
+
+
+
+
+
+
+ DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect
+ gPageOutputCS != null || gDocumentOutputCS != null
+
+ DeviceGray colour space is used without output intent profile
+
+
+
+
+
+
+ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present
+ areColorantsPresent == true
+
+ A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary
+
+
+
+
+
+
+
+
+ All Separation arrays within a single conforming PDF/A-4 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored
+ areTintAndAlternateConsistent == true
+
+ Several occurrences of a Separation colour space with the same name are not consistent
+
+
+
+
+
+
+ A graphics state parameter dictionary (ISO 32000-2:2020, 8.4.5) shall not contain the TR key
+ TR == null
+
+ A graphics state parameter dictionary contains the TR key
+
+
+
+
+
+
+
+
+ A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default
+ TR2 == null || TR2 == "Default"
+
+ A graphics state parameter dictionary contains the TR2 key with value %1 other than Default
+
+ TR2
+
+
+
+
+
+
+ A graphics state parameter dictionary shall not contain the HTO key
+ containsHTO == false
+
+ A graphics state parameter dictionary contains the HTO key
+
+
+
+
+
+
+ All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key
+ HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5)
+
+ A Halftone has type %1 instead of 1 or 5
+
+ HalftoneType
+
+
+
+
+
+
+ Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key
+ HalftoneName == null
+
+ A Halftone dictionary contains the HalftoneName key
+
+
+
+
+
+
+ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020
+ colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null)
+
+ Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants
+
+
+
+
+
+
+
+
+ An Image dictionary shall not contain the Alternates key
+ containsAlternates == false
+
+ Alternates key is present in the Image dictionary
+
+
+
+
+
+
+ An Image dictionary shall not contain the OPI key
+ containsOPI == false
+
+ OPI key is present in the Image dictionary
+
+
+
+
+
+
+ If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key, if present, shall have a value of false
+ Interpolate == false
+
+ The value of the Interpolate key in the Image dictionary is true
+
+
+
+
+
+
+ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16
+ BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 || BitsPerComponent == 16
+
+ The value of the BitsPerComponent key in the Image dictionary is %1
+
+ BitsPerComponent
+
+
+
+
+
+
+
+
+ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4
+ nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4
+
+ JPEG2000 image has %1 colour channels that is neither 1, 3 or 4
+
+ nrColorChannels
+
+
+
+
+
+
+ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field
+ hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1
+
+ The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field)
+
+ nrColorSpacesWithApproxField
+
+
+
+
+
+
+ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only that colour space and shall ignore all other colour space specifications
+ hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3
+
+ Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03
+
+ colrMethod
+
+
+
+
+
+
+ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used
+ hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19
+
+ JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A
+
+
+
+
+
+
+ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth
+ bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38)
+
+ JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2)
+
+ bpccBoxPresent
+ bitDepth
+
+
+
+
+
+
+ A form XObject dictionary shall not contain an OPI key
+ containsOPI == false
+
+ The form XObject dictionary contains an OPI key
+
+
+
+
+
+
+ A conforming file shall not contain any reference XObjects
+ containsRef == false
+
+ The document contains a reference XObject (Ref key in the form XObject dictionary)
+
+
+
+
+
+
+ Only blend modes that are specified in ISO 32000-2:2020 shall be used for the value of the BM key in a graphic state dictionary or an annotation dictionary
+ internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity"
+
+ The document uses the blend mode %1 not defined in ISO 32000-2:2020
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+ If the document does not contain a PDF/A output intent, then all pages that contain transparency shall either have a page-level PDF/A output intent or the page dictionary shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space
+ gDocumentOutputCS != null || outputColorSpace != null || containsGroupCS == true || containsTransparency == false
+
+ The page contains transparent objects with no blending colour space defined
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary
+ Type == "Font"
+
+ A Font dictionary has value %1 of Type entry instead of Font
+
+ Type
+
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts
+ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
+
+ Invalid Subtype entry in font dictionary with value %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font
+ Subtype == "Type3" || fontName != null
+
+ A BaseFont entry is missing or has invalid type
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array
+ isStandard == true || FirstChar != null
+
+ A non-standard simple font dictionary has missing or invalid FirstChar entry
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array
+ isStandard == true || LastChar != null
+
+ A non-standard simple font dictionary has missing or invalid LastChar entry
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths
+ isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
+
+ Widths array is missing or has invalid size %1 instead of %2
+
+ Widths_size
+ LastChar - FirstChar + 1
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 2.0 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22
+ fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType"
+
+ Unsupported font file format %1 of the embedded font
+
+ fontFileSubtype
+
+
+
+
+
+
+
+
+
+
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary shall have the following relationship: - If the Encoding key in the Type 0 font dictionary has a value of Identity-H or Identity-V, then any values for the Registry, Ordering, and Supplement keys may be used in the CIDSystemInfo dictionary of the CIDFont. - Otherwise the corresponding values of the Registry and Ordering keys in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement)
+
+ CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+ CIDFontSupplement
+ CMapSupplement
+
+
+
+
+
+
+ ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-2:2020, 9.7.4 Table 115
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+ All CMaps used within a conforming PDF/A-4 file, except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1
+
+ A non-standard CMap %1 is not embedded
+
+ CMapName
+
+
+
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+ A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V"
+
+ A CMap references another non-standard CMap %1
+
+ CMapName
+
+
+
+
+
+
+
+
+ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-2:2020, 9.9
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-2:2020, 9.6.5 without the use of a non-standard mapping chosen by the conforming processor
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
+
+ For every font embedded in a conforming file, the glyph width information in the font dictionary and in the embedded font program shall be consistent for every glyph referenced for rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain at least Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1), or Macintosh Roman (1,0 – Platform ID=1, Encoding ID=0) 'cmap' subtable that all necessary glyph lookups are able to be carried out
+ isSymbolic == true || cmap31Present == true || cmap10Present == true
+
+ The embedded font program for a non-symbolic TrueType font does not contain Microsoft Symbol (3,1 – Platform ID=3, Encoding ID=1) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding
+
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the dictionary which is the value of the Encoding key in the Font dictionary. In addition, no non-symbolic TrueType font shall define a Differences array unless all of the glyph names in the Differences array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' subtable
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+ The 'cmap' subtable in the embedded font program for a symbolic TrueType font shall contain either the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding
+ isSymbolic == false || cmap30Present == true || cmap10Present == true
+
+ The embedded font program for a symbolic TrueType font does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding
+
+
+
+
+
+
+ If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE
+ toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1)
+
+ The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard
+
+
+
+
+
+
+ The ActualText entry shall not contain any PUA values
+ containsPUA == false
+
+ The ActualText entry contains Unicode PUA (Private Use Area) code points
+
+
+
+
+
+
+ A PDF/A-4 compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators, regardless of text rendering mode, in any content stream
+ name != ".notdef"
+
+ The document contains a reference to the .notdef glyph
+
+
+
+
+
+
+ Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. Additionally, the Sound, Screen, Movie and FileAttachment types shall not be permitted. 3D and RichMedia types shall only be permitted in a PDF/A-4e compliant file as described in Annex B
+ Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" || Subtype == "3D" || Subtype == "Projection" || Subtype == "RichMedia"
+
+ Unknown or not permitted Annotation type %1
+
+ Subtype
+
+
+
+
+
+
+
+
+ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key
+ Subtype == "Popup" || F != null
+
+ A dictionary of %1 annotation does not contain F key
+
+ Subtype
+
+
+
+
+
+
+ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0
+ F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0)
+
+ Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6)
+
+ F
+ (F & 4) >> 2
+ (F & 2) >> 1
+ (F & 1)
+ (F & 32) >> 5
+ (F & 256) >> 8
+
+
+
+
+
+
+ Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to the value at index 3 and the value at index 2 is equal to the value at index 4; - annotations whose Subtype value is Popup, Link or Projection
+ (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null
+
+ An annotation does not contain an appearance dictionary
+
+
+
+
+
+
+
+
+ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key
+ AP == null || AP == "N"
+
+ Annotation's appearance dictionary contains entries %1 other than N
+
+ AP.split('&').filter(elem => elem != 'N').toString()
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary
+ AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0)
+
+ An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary
+
+ N_type
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
+ AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream"
+
+ An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream
+
+ Subtype
+ FT
+
+
+
+
+
+
+ A Widget annotation dictionary shall not contain the A key
+ containsA == false
+
+ A Widget annotation contains A entry
+
+
+
+
+
+
+ The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
+ NeedAppearances == null || NeedAppearances == false
+
+ The interactive form dictionary contains the NeedAppearances flag with value true
+
+
+
+
+
+
+ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-4 file, if present, shall not contain the XFA key
+ containsXFA == false
+
+ The interactive form dictionary contains the XFA key
+
+
+
+
+
+
+ A document's Catalog shall not contain the NeedsRendering key
+ NeedsRendering == false
+
+ A document's Catalog contains NeedsRendering flag set to true
+
+
+
+
+
+
+ The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition and Trans actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The SetOCGState and GoTo3DView actions shall only be permitted in a PDF/A-4e compliant file as described in Annex B
+ S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "SetOCGState" || S == "GoTo3DView" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp"
+
+ Unknown or not permitted Action type %1
+
+ S
+
+
+
+
+
+
+
+
+ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
+ N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
+
+ Unknown or not permitted named action %1
+
+ N
+
+
+
+
+
+
+
+
+ If a document catalog dictionary or page dictionary or an annotation dictionary (other than a Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) shall only contain keys from the following list: E, X, D, U, Fo, and Bl
+ parentType == 'WidgetAnnot' || parentType == 'FormField' || entries.split('&').filter(elem => elem != 'E' && elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 || entries == ''
+
+ Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, U, Fo, and Bl
+
+ entries.split('&').filter(elem => elem != 'E' && elem != 'X' && elem != 'D' &&
+ elem != 'U' && elem != 'Fo' && elem != 'Bl').toString()
+
+
+
+
+
+
+ The document catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-2:2020, 14.3.2
+ metadata_size == 1
+
+ The document catalog dictionary doesn't contain metadata key
+
+
+
+
+
+
+
+
+ The bytes attribute shall not be used in the header of an XMP packet
+ bytes == null
+
+ The XMP Package contains bytes attribute
+
+
+
+
+
+
+ The encoding attribute shall not be used in the header of an XMP packet
+ encoding == null
+
+ The XMP Package contains encoding attribute
+
+
+
+
+
+
+ All content of all XMP packets located in any metadata stream present in the PDF shall be well-formed as defined by XMP (ISO 16684-1)
+ isSerializationValid
+
+ A metadata stream is serialized incorrectly and can not be parsed
+
+
+
+
+
+
+
+
+ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8
+ actualEncoding == "UTF-8"
+
+ The XMP package uses encoding %1 different from UTF-8
+
+ actualEncoding
+
+
+
+
+
+
+
+
+ The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/"
+ Identification_size == 1
+
+ The document metadata stream doesn't contains PDF/A Identification Schema
+
+
+
+
+
+
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+ part == 4
+
+ The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file
+
+ part
+
+
+
+
+
+
+ A PDF/A-4e conforming file (as described in Annex B) shall specify the value of "pdfaid:conformance" as E
+ conformance == "E"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "E" for PDF/A-4E conforming file
+
+ conformance
+
+
+
+
+
+
+
+
+ Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ partPrefix == null || partPrefix == "pdfaid"
+
+ Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+ The value of "pdfaid:rev" shall be the four digit year
+ /^\d{4}$/.test(rev)
+
+ The value of "pdfaid:rev" (%1) is not the four digit year
+
+ rev
+
+
+
+
+
+
+ Property "rev" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ revPrefix == null || revPrefix == "pdfaid"
+
+ Property "rev" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ revPrefix
+
+
+
+
+
+
+ The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. If the MIME type is not known, the value "application/octet-stream" shall be used
+ Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype)
+
+ MIME type %1 of an embedded file is missing or invalid
+
+ Subtype
+
+
+
+
+
+
+
+
+ The file specification dictionary for an embedded file shall contain the F and UF keys
+ containsEF == false || (F != null && UF != null)
+
+ The file specification dictionary for an embedded file does not contain either F or UF key (F = %1, UF = %2)
+
+ F
+ UF
+
+
+
+
+
+
+ Each embedded file’s file specification dictionary shall contain an AFRelationship key (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF
+ containsEF == false || AFRelationship != null
+
+ The file specification dictionary for an embedded file does not contain the AFRelationship key
+
+
+
+
+
+
+
+
+ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key
+ Name != null
+
+ Missing Name entry of the optional content configuration dictionary
+
+
+
+
+
+
+ Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-4 file
+ hasDuplicateName == false
+
+ Optional content configuration dictionary has duplicated name %1
+
+ Name
+
+
+
+
+
+
+ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file
+ OCGsNotContainedInOrder == null
+
+ Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary
+
+ OCGsNotContainedInOrder
+
+
+
+
+
+
+ There shall be no AlternatePresentations entry in the document's name dictionary
+ containsAlternatePresentations == false
+
+ The document's name dictionary contains the AlternatePresentations entry
+
+
+
+
+
+
+ There shall be no PresSteps entry in any Page dictionary
+ containsPresSteps == false
+
+ A Page dictionary contains the PresSteps entry
+
+
+
+
+
+
+ The document catalog shall not contain the Requirements key
+ Requirements == null
+
+ The document catalog contains the Requirements key
+
+
+
+
+
+
+
+ null
+ outputColorSpace
+
+
+ null
+ ICCProfileMD5
+
+
+ null
+ destOutputProfileIndirect
+
+
+ null
+ outputColorSpace
+
+
+ null
+ colorSpaceType
+
+
+
diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml
new file mode 100644
index 00000000..b40fba90
--- /dev/null
+++ b/PDF_A/PDFA-4F.xml
@@ -0,0 +1,1349 @@
+
+
+
+ PDF/A-4F validation profile
+ Validation rules against ISO 19005-4:2020, Level F
+
+
+
+
+
+ The file header shall begin at byte zero and shall consist of "%PDF-2.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 9 (39h)
+ headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header)
+
+ File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-2.n, where 'n' is a single digit number between 0 and 9
+
+ header
+ headerOffset
+
+
+
+
+
+
+ The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127
+ headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
+
+ Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4)
+
+ headerByte1
+ headerByte2
+ headerByte3
+ headerByte4
+
+
+
+
+
+
+ File identifiers shall be defined by the ID entry in a PDF file’s trailer dictionary
+ lastID != null && lastID.length() > 0
+
+ Missing or empty ID in the document trailer
+
+
+
+
+
+
+
+
+ The Encrypt key shall not be present in the trailer dictionary
+ isEncrypted != true
+
+ The Encrypt key is present in the trailer dictionary
+
+
+
+
+
+
+ No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5
+ postEOFDataSize == 0
+
+ %1 byte(s) of data is present after the last end-of-file marker
+
+ postEOFDataSize
+
+
+
+
+
+
+
+
+ The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary
+ containsPieceInfo == true || containsInfo == false
+
+ The Info key present in the trailer dictionary, but PieceInfo entry does not present in the document catalog dictionary
+
+
+
+
+
+
+ If a document information dictionary is present, it shall only contain a ModDate entry
+ size == 1 && ModDate != null
+
+ Document information dictionary is present and contains %1 key(s), but allowed only ModDate
+
+ keysString.split('&').filter(elem => elem != 'ModDate').toString()
+
+
+
+
+
+
+ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker
+ xrefEOLMarkersComplyPDFA
+
+ Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table
+
+
+
+
+
+
+ Hexadecimal strings shall contain an even number of non-white-space characters
+ (isHex != true) || hexCount % 2 == 0
+
+ A hexadecimal string contains odd number (%1) of non-white-space characters
+
+ hexCount
+
+
+
+
+
+
+ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)
+ (isHex != true) || containsOnlyHex == true
+
+ Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f
+
+
+
+
+
+
+ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword
+ Length == realLength
+
+ Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s))
+
+ realLength
+ Length
+
+
+
+
+
+
+ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys
+ F == null && FFilter == null && FDecodeParms == null
+
+ A stream object dictionary contains %1 key(s)
+
+ keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString()
+
+
+
+
+
+
+ All standard stream filters listed in ISO 32000-2:2020, 7.4, Table 6 may be used, with the exception of LZWDecode. Filters that are not listed in ISO 32000-2:2020, 7.4, Table 6 shall not be used. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || (internalRepresentation == "Crypt" && decodeParms == "Identity")
+
+ Unknown or not permitted Stream filter %1 is used
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+ Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences
+ isValidUtf8 == true
+
+ The name value %1 does not represent a correct UTF-8 character sequence
+
+ unicodeValue
+
+
+
+
+
+
+
+
+ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker
+ spacingCompliesPDFA
+
+ Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj'
+
+
+
+
+
+
+ The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-2:2020, 8.9.7, Table 92, or an array containing any such value
+ internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || internalRepresentation == "CCF" || internalRepresentation == "DCT"
+
+ Inline image uses not permitted or unknown filter %1
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263)
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == ''
+
+ The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP
+
+ entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString()
+
+
+
+
+
+
+
+
+ If the Version key is present in the document catalog dictionary, the first character in its value shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3
+ Version == null || /^2\.[0-9]$/.test(Version)
+
+ The Version key with value %1 does not match the pattern 2.n, where 'n' is a single digit number between 0 and 9
+
+ Version
+
+
+
+
+
+
+ Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed by the BX/EX compatibility operators
+ false
+
+ A content stream contains operator %1 not defined in ISO 32000-2:2020
+
+ name
+
+
+
+
+
+
+ A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources referenced by this content stream
+ inheritedResourceNames == ''
+
+ A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary
+
+ inheritedResourceNames
+
+
+
+
+
+
+
+
+ A content stream's named resources shall be defined by a resource dictionary, which shall enumerate the named resources needed by the operators in the content stream and the names by which they can be referred to
+ undefinedResourceNames == ''
+
+ A content stream references named resource(s) %1 not defined by a resource dictionary
+
+ undefinedResourceNames
+
+
+
+
+
+
+
+
+ The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK"
+ (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0
+
+ The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3)
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ If any OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X or PDF/E, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream
+ sameOutputProfileIndirect == true
+
+ OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1)
+
+ outputProfileIndirects
+
+
+
+
+
+
+ The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary
+ containsDestOutputProfileRef == false
+
+ The output intent dictionary contains forbidden entry DestOutputProfileRef
+
+
+
+
+
+
+
+
+ The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5
+ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0
+
+ The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 2.0 requirements
+
+ deviceClass
+ colorSpace
+ version
+
+
+
+
+
+
+
+
+ Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both
+ overprintFlag == false || OPM == 0
+
+ Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting
+
+ OPM
+
+
+
+
+
+
+
+
+ An ICCBased colour space shall not be used where the profile is a CMYK destination profile and is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace
+ (ICCProfileIndirect == null || (ICCProfileIndirect != gOutputProfileIndirect && ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5))
+
+ An ICCBased CMYK color space is identical to the current PDF/A OutputIntent color profile or the current transparency blending color space
+
+
+
+
+
+
+ DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used or if the current transparency blending space, when the DeviceRGB colour space is used, is a device independent RGB-based colour space or the current PDF/A OutputIntent, when the DeviceRGB colour space is used, contains an 'RGB ' destination profile
+ (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') || gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB'
+
+ DeviceRGB colour space is used without RGB output intent profile and without current transparency blending space being Device-independent RGB
+
+
+
+
+
+
+ DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or if the current transparency blending space, when the DeviceCMYK colour space is used, is a device independent CMYK-based colour space or the current PDF/A OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile
+ (gPageOutputCS == null ? gDocumentOutputCS == 'CMYK' : gPageOutputCS == 'CMYK') || gTransparencyCS == 'CMYK'
+
+ DeviceCMYK colour space is used without CMYK output intent profile and without current transparency blending space being Device-independent CMYK
+
+
+
+
+
+
+ DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect
+ gPageOutputCS != null || gDocumentOutputCS != null
+
+ DeviceGray colour space is used without output intent profile
+
+
+
+
+
+
+ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present
+ areColorantsPresent == true
+
+ A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary
+
+
+
+
+
+
+
+
+ All Separation arrays within a single conforming PDF/A-4 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored
+ areTintAndAlternateConsistent == true
+
+ Several occurrences of a Separation colour space with the same name are not consistent
+
+
+
+
+
+
+ A graphics state parameter dictionary (ISO 32000-2:2020, 8.4.5) shall not contain the TR key
+ TR == null
+
+ A graphics state parameter dictionary contains the TR key
+
+
+
+
+
+
+
+
+ A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default
+ TR2 == null || TR2 == "Default"
+
+ A graphics state parameter dictionary contains the TR2 key with value %1 other than Default
+
+ TR2
+
+
+
+
+
+
+ A graphics state parameter dictionary shall not contain the HTO key
+ containsHTO == false
+
+ A graphics state parameter dictionary contains the HTO key
+
+
+
+
+
+
+ All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key
+ HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5)
+
+ A Halftone has type %1 instead of 1 or 5
+
+ HalftoneType
+
+
+
+
+
+
+ Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key
+ HalftoneName == null
+
+ A Halftone dictionary contains the HalftoneName key
+
+
+
+
+
+
+ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020
+ colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null)
+
+ Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants
+
+
+
+
+
+
+
+
+ An Image dictionary shall not contain the Alternates key
+ containsAlternates == false
+
+ Alternates key is present in the Image dictionary
+
+
+
+
+
+
+ An Image dictionary shall not contain the OPI key
+ containsOPI == false
+
+ OPI key is present in the Image dictionary
+
+
+
+
+
+
+ If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key, if present, shall have a value of false
+ Interpolate == false
+
+ The value of the Interpolate key in the Image dictionary is true
+
+
+
+
+
+
+ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16
+ BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 || BitsPerComponent == 16
+
+ The value of the BitsPerComponent key in the Image dictionary is %1
+
+ BitsPerComponent
+
+
+
+
+
+
+
+
+ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4
+ nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4
+
+ JPEG2000 image has %1 colour channels that is neither 1, 3 or 4
+
+ nrColorChannels
+
+
+
+
+
+
+ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field
+ hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1
+
+ The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field)
+
+ nrColorSpacesWithApproxField
+
+
+
+
+
+
+ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only that colour space and shall ignore all other colour space specifications
+ hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3
+
+ Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03
+
+ colrMethod
+
+
+
+
+
+
+ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used
+ hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19
+
+ JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A
+
+
+
+
+
+
+ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth
+ bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38)
+
+ JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2)
+
+ bpccBoxPresent
+ bitDepth
+
+
+
+
+
+
+ A form XObject dictionary shall not contain an OPI key
+ containsOPI == false
+
+ The form XObject dictionary contains an OPI key
+
+
+
+
+
+
+ A conforming file shall not contain any reference XObjects
+ containsRef == false
+
+ The document contains a reference XObject (Ref key in the form XObject dictionary)
+
+
+
+
+
+
+ Only blend modes that are specified in ISO 32000-2:2020 shall be used for the value of the BM key in a graphic state dictionary or an annotation dictionary
+ internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity"
+
+ The document uses the blend mode %1 not defined in ISO 32000-2:2020
+
+ internalRepresentation
+
+
+
+
+
+
+
+
+ If the document does not contain a PDF/A output intent, then all pages that contain transparency shall either have a page-level PDF/A output intent or the page dictionary shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space
+ gDocumentOutputCS != null || outputColorSpace != null || containsGroupCS == true || containsTransparency == false
+
+ The page contains transparent objects with no blending colour space defined
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary
+ Type == "Font"
+
+ A Font dictionary has value %1 of Type entry instead of Font
+
+ Type
+
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts
+ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
+
+ Invalid Subtype entry in font dictionary with value %1
+
+ Subtype
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font
+ Subtype == "Type3" || fontName != null
+
+ A BaseFont entry is missing or has invalid type
+
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array
+ isStandard == true || FirstChar != null
+
+ A non-standard simple font dictionary has missing or invalid FirstChar entry
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array
+ isStandard == true || LastChar != null
+
+ A non-standard simple font dictionary has missing or invalid LastChar entry
+
+
+
+
+
+
+
+
+
+ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths
+ isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
+
+ Widths array is missing or has invalid size %1 instead of %2
+
+ Widths_size
+ LastChar - FirstChar + 1
+
+
+
+
+
+
+
+
+
+ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 2.0 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22
+ fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType"
+
+ Unsupported font file format %1 of the embedded font
+
+ fontFileSubtype
+
+
+
+
+
+
+
+
+
+
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary shall have the following relationship: - If the Encoding key in the Type 0 font dictionary has a value of Identity-H or Identity-V, then any values for the Registry, Ordering, and Supplement keys may be used in the CIDSystemInfo dictionary of the CIDFont. - Otherwise the corresponding values of the Registry and Ordering keys in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement)
+
+ CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+ CIDFontSupplement
+ CMapSupplement
+
+
+
+
+
+
+ ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-2:2020, 9.7.4 Table 115
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+ All CMaps used within a conforming PDF/A-4 file, except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1
+
+ A non-standard CMap %1 is not embedded
+
+ CMapName
+
+
+
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+ A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V"
+
+ A CMap references another non-standard CMap %1
+
+ CMapName
+
+
+
+
+
+
+
+
+ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-2:2020, 9.9
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-2:2020, 9.6.5 without the use of a non-standard mapping chosen by the conforming processor
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
+
+ For every font embedded in a conforming file, the glyph width information in the font dictionary and in the embedded font program shall be consistent for every glyph referenced for rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain at least Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1), or Macintosh Roman (1,0 – Platform ID=1, Encoding ID=0) 'cmap' subtable that all necessary glyph lookups are able to be carried out
+ isSymbolic == true || cmap31Present == true || cmap10Present == true
+
+ The embedded font program for a non-symbolic TrueType font does not contain Microsoft Symbol (3,1 – Platform ID=3, Encoding ID=1) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding
+
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the dictionary which is the value of the Encoding key in the Font dictionary. In addition, no non-symbolic TrueType font shall define a Differences array unless all of the glyph names in the Differences array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' subtable
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+ The 'cmap' subtable in the embedded font program for a symbolic TrueType font shall contain either the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding
+ isSymbolic == false || cmap30Present == true || cmap10Present == true
+
+ The embedded font program for a symbolic TrueType font does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding
+
+
+
+
+
+
+ If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE
+ toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1)
+
+ The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard
+
+
+
+
+
+
+ The ActualText entry shall not contain any PUA values
+ containsPUA == false
+
+ The ActualText entry contains Unicode PUA (Private Use Area) code points
+
+
+
+
+
+
+ A PDF/A-4 compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators, regardless of text rendering mode, in any content stream
+ name != ".notdef"
+
+ The document contains a reference to the .notdef glyph
+
+
+
+
+
+
+ Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. Additionally, the Sound, Screen, Movie, 3D and RichMedia types shall not be permitted. The FileAttachment type shall only be permitted in a PDF/A-4f compliant file as described in Annex A
+ Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" || Subtype == "Projection"
+
+ Unknown or not permitted Annotation type %1
+
+ Subtype
+
+
+
+
+
+
+
+
+ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key
+ Subtype == "Popup" || F != null
+
+ A dictionary of %1 annotation does not contain F key
+
+ Subtype
+
+
+
+
+
+
+ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0
+ F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0)
+
+ Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6)
+
+ F
+ (F & 4) >> 2
+ (F & 2) >> 1
+ (F & 1)
+ (F & 32) >> 5
+ (F & 256) >> 8
+
+
+
+
+
+
+ Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to the value at index 3 and the value at index 2 is equal to the value at index 4; - annotations whose Subtype value is Popup, Link or Projection
+ (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null
+
+ An annotation does not contain an appearance dictionary
+
+
+
+
+
+
+
+
+ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key
+ AP == null || AP == "N"
+
+ Annotation's appearance dictionary contains entries %1 other than N
+
+ AP.split('&').filter(elem => elem != 'N').toString()
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary
+ AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0)
+
+ An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary
+
+ N_type
+
+
+
+
+
+
+ If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
+ AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream"
+
+ An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream
+
+ Subtype
+ FT
+
+
+
+
+
+
+ A Widget annotation dictionary shall not contain the A key
+ containsA == false
+
+ A Widget annotation contains A entry
+
+
+
+
+
+
+ The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
+ NeedAppearances == null || NeedAppearances == false
+
+ The interactive form dictionary contains the NeedAppearances flag with value true
+
+
+
+
+
+
+ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-4 file, if present, shall not contain the XFA key
+ containsXFA == false
+
+ The interactive form dictionary contains the XFA key
+
+
+
+
+
+
+ A document's Catalog shall not contain the NeedsRendering key
+ NeedsRendering == false
+
+ A document's Catalog contains NeedsRendering flag set to true
+
+
+
+
+
+
+ The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and no-op actions shall not be permitted
+ S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp"
+
+ Unknown or not permitted Action type %1
+
+ S
+
+
+
+
+
+
+
+
+ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
+ N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
+
+ Unknown or not permitted named action %1
+
+ N
+
+
+
+
+
+
+
+
+ If a document catalog dictionary or page dictionary or an annotation dictionary (other than a Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) shall only contain keys from the following list: E, X, D, U, Fo, and Bl
+ parentType == 'WidgetAnnot' || parentType == 'FormField' || entries.split('&').filter(elem => elem != 'E' && elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 || entries == ''
+
+ Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, U, Fo, and Bl
+
+ entries.split('&').filter(elem => elem != 'E' && elem != 'X' && elem != 'D' &&
+ elem != 'U' && elem != 'Fo' && elem != 'Bl').toString()
+
+
+
+
+
+
+ The document catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-2:2020, 14.3.2
+ metadata_size == 1
+
+ The document catalog dictionary doesn't contain metadata key
+
+
+
+
+
+
+
+
+ The bytes attribute shall not be used in the header of an XMP packet
+ bytes == null
+
+ The XMP Package contains bytes attribute
+
+
+
+
+
+
+ The encoding attribute shall not be used in the header of an XMP packet
+ encoding == null
+
+ The XMP Package contains encoding attribute
+
+
+
+
+
+
+ All content of all XMP packets located in any metadata stream present in the PDF shall be well-formed as defined by XMP (ISO 16684-1)
+ isSerializationValid
+
+ A metadata stream is serialized incorrectly and can not be parsed
+
+
+
+
+
+
+
+
+ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8
+ actualEncoding == "UTF-8"
+
+ The XMP package uses encoding %1 different from UTF-8
+
+ actualEncoding
+
+
+
+
+
+
+
+
+ The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/"
+ Identification_size == 1
+
+ The document metadata stream doesn't contains PDF/A Identification Schema
+
+
+
+
+
+
+ The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
+ part == 4
+
+ The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file
+
+ part
+
+
+
+
+
+
+ A PDF/A-4f conforming file (as described in Annex A) shall specify the value of "pdfaid:conformance" as F
+ conformance == "F"
+
+ The "conformance" property of the PDF/A Identification Schema is %1 instead of "F" for PDF/A-4F conforming file
+
+ conformance
+
+
+
+
+
+
+
+
+ Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ partPrefix == null || partPrefix == "pdfaid"
+
+ Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+ The value of "pdfaid:rev" shall be the four digit year
+ /^\d{4}$/.test(rev)
+
+ The value of "pdfaid:rev" (%1) is not the four digit year
+
+ rev
+
+
+
+
+
+
+ Property "rev" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
+ revPrefix == null || revPrefix == "pdfaid"
+
+ Property "rev" of the PDF/A Identification Schema has invalid namespace prefix %1
+
+ revPrefix
+
+
+
+
+
+
+ The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. If the MIME type is not known, the value "application/octet-stream" shall be used
+ Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype)
+
+ MIME type %1 of an embedded file is missing or invalid
+
+ Subtype
+
+
+
+
+
+
+
+
+ The file specification dictionary for an embedded file shall contain the F and UF keys
+ containsEF == false || (F != null && UF != null)
+
+ The file specification dictionary for an embedded file does not contain either F or UF key (F = %1, UF = %2)
+
+ F
+ UF
+
+
+
+
+
+
+ Each embedded file’s file specification dictionary shall contain an AFRelationship key (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF
+ containsEF == false || AFRelationship != null
+
+ The file specification dictionary for an embedded file does not contain the AFRelationship key
+
+
+
+
+
+
+
+
+ A PDF/A-4f conforming file shall contain an EmbeddedFiles key in the name dictionary of the document catalog dictionary
+ containsEmbeddedFiles == true
+
+ A PDF/A-4f conforming file does not contain an EmbeddedFiles key in the name dictionary of the document catalog dictionary
+
+
+
+
+
+
+
+
+ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key
+ Name != null
+
+ Missing Name entry of the optional content configuration dictionary
+
+
+
+
+
+
+ Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-4 file
+ hasDuplicateName == false
+
+ Optional content configuration dictionary has duplicated name %1
+
+ Name
+
+
+
+
+
+
+ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file
+ OCGsNotContainedInOrder == null
+
+ Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary
+
+ OCGsNotContainedInOrder
+
+
+
+
+
+
+ There shall be no AlternatePresentations entry in the document's name dictionary
+ containsAlternatePresentations == false
+
+ The document's name dictionary contains the AlternatePresentations entry
+
+
+
+
+
+
+ There shall be no PresSteps entry in any Page dictionary
+ containsPresSteps == false
+
+ A Page dictionary contains the PresSteps entry
+
+
+
+
+
+
+ The document catalog shall not contain the Requirements key
+ Requirements == null
+
+ The document catalog contains the Requirements key
+
+
+
+
+
+
+
+ null
+ outputColorSpace
+
+
+ null
+ ICCProfileMD5
+
+
+ null
+ destOutputProfileIndirect
+
+
+ null
+ outputColorSpace
+
+
+ null
+ colorSpaceType
+
+
+
diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml
new file mode 100644
index 00000000..2b0dd566
--- /dev/null
+++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-1:2014 - 5 Version identification - PDF/UA Identification Schema
+ The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema
+
+
+
+
+
+ The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema
+ UAIdentification_size == 1
+
+ The document metadata stream doesn't contains PDF/UA Identification Schema
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml
new file mode 100644
index 00000000..7f9c31ec
--- /dev/null
+++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 14289-1:2014 - 5 Version identification - Part number
+ The value of "pdfuaid:part" shall be the part number of the International Standard to which the file
+ conforms
+
+
+
+
+
+ The value of "pdfuaid:part" shall be the part number of the International Standard to which the file conforms
+ part == 1
+
+ The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA-1 conforming file
+
+ part
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t03.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t03.xml
new file mode 100644
index 00000000..9d1a6ce6
--- /dev/null
+++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t03.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 5 Version identification - part prefix
+ Property "part" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
+
+
+
+
+
+ Property "part" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
+ partPrefix == null || partPrefix == "pdfuaid"
+
+ Property "part" of the PDF/UA Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t04.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t04.xml
new file mode 100644
index 00000000..94589b4b
--- /dev/null
+++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t04.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 5 Version identification - amd prefix
+ Property "amd" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
+
+
+
+
+
+ Property "amd" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
+ amdPrefix == null || amdPrefix == "pdfuaid"
+
+ Property "amd" of the PDF/UA Identification Schema has invalid namespace prefix %1
+
+ amdPrefix
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t05.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t05.xml
new file mode 100644
index 00000000..bcd58d55
--- /dev/null
+++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t05.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 5 Version identification - corr prefix
+ Property "corr" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
+
+
+
+
+
+ Property "corr" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
+ corrPrefix == null || corrPrefix == "pdfuaid"
+
+ Property "corr" of the PDF/UA Identification Schema has invalid namespace prefix %1
+
+ corrPrefix
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml
new file mode 100644
index 00000000..de19c0a7
--- /dev/null
+++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.1 General - Artifact inside tagged content
+ Content marked as Artifact should not present inside tagged content
+
+
+
+
+
+ Content marked as Artifact should not present inside tagged content
+ tag != 'Artifact' || isTaggedContent == false
+
+ Content marked as Artifact is present inside tagged content (parent struct element %1)
+
+ parentStructureElementObjectKey
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml
new file mode 100644
index 00000000..199c8498
--- /dev/null
+++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.1 General - Tagged content inside Artifact
+ Tagged content should not present inside content marked as Artifact
+
+
+
+
+
+ Tagged content should not present inside content marked as Artifact
+ isTaggedContent == false || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0
+
+ Tagged content (parent struct element %1) is present inside content marked as Artifact
+
+ parentStructureElementObjectKey
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml
new file mode 100644
index 00000000..a9717540
--- /dev/null
+++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-1:2014 - 7.1 General - Artifact or real content
+ Content shall be marked as Artifact or tagged as real content
+
+
+
+
+
+ Content shall be marked as Artifact or tagged as real content
+ isTaggedContent == true || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0
+
+ Content is neither marked as Artifact nor tagged as real content
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml
new file mode 100644
index 00000000..18bbe954
--- /dev/null
+++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.1 General - Suspects
+ Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321)
+
+
+
+
+
+ Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321)
+ Suspects != true
+
+ Suspects entry has a value of true
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml
new file mode 100644
index 00000000..bd725821
--- /dev/null
+++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml
@@ -0,0 +1,31 @@
+
+
+
+ ISO 14289-1:2014 - 7.1 General - Standard roles
+ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type,
+ as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root.
+ This mapping may be indirect; within the role map a non-standard type can map directly to another
+ non-standard type, but eventually the mapping shall terminate at a standard type
+
+
+
+
+
+ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type,
+ as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root.
+ This mapping may be indirect; within the role map a non-standard type can map directly to another
+ non-standard type, but eventually the mapping shall terminate at a standard type
+ isNotMappedToStandardType == false
+
+ Non-standard structure type %1 is not mapped to a standard type
+
+ valueS
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml
new file mode 100644
index 00000000..4950a01a
--- /dev/null
+++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.1 General - Circular mapping
+ A circular mapping shall not exist
+
+
+
+
+
+ A circular mapping shall not exist
+ circularMappingExist != true
+
+ A circular mapping exists for %1 structure type
+
+ valueS
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml
new file mode 100644
index 00000000..ee8d31a4
--- /dev/null
+++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.1 General - Remapped standard types
+ Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped
+
+
+
+
+
+ Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped
+ remappedStandardType == null
+
+ Standard type %1 is remapped
+
+ remappedStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml
new file mode 100644
index 00000000..6ed22f7b
--- /dev/null
+++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.1 General - Metadata key in the Catalog
+ The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2
+
+
+
+
+
+ The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2
+ metadata_size == 1
+
+ The document catalog dictionary doesn't contain metadata key
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml
new file mode 100644
index 00000000..9da52dc6
--- /dev/null
+++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.1 General - Dc title
+ The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the
+ recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which
+ clearly identifies the document
+
+
+
+
+
+ The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the
+ recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which
+ clearly identifies the document
+ dc_title != null
+
+ Metadata stream does not contain dc:title
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml
new file mode 100644
index 00000000..917c7860
--- /dev/null
+++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.1 General - DisplayDocTitle
+ The document catalog dictionary shall include a ViewerPreferences dictionary containing a
+ DisplayDocTitle key, whose value shall be true
+
+
+
+
+
+ The document catalog dictionary shall include a ViewerPreferences dictionary containing a
+ DisplayDocTitle key, whose value shall be true
+ DisplayDocTitle == true
+
+ ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is
+ set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1,
+ DisplayDocTitle = %2)
+
+ ViewerPreferences
+ DisplayDocTitle
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t11.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t11.xml
new file mode 100644
index 00000000..fb8fa539
--- /dev/null
+++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t11.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.1 General - StructTreeRoot
+ The logical structure of the conforming file shall be described by a structure hierarchy rooted in the
+ StructTreeRoot entry of the document catalog dictionary, as described in ISO 32000-1:2008, 14.7
+
+
+
+
+
+ The logical structure of the conforming file shall be described by a structure hierarchy
+ rooted in the StructTreeRoot entry of the document catalog dictionary,
+ as described in ISO 32000-1:2008, 14.7
+ StructTreeRoot_size == 1
+
+ StructTreeRoot entry is not present in the document catalog
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t12.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t12.xml
new file mode 100644
index 00000000..bbfcd108
--- /dev/null
+++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t12.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.1 General - Struct element parent
+ A structure element dictionary shall contain the P (parent) entry according to ISO 32000-1:2008,
+ 14.7.2, Table 355
+
+
+
+
+
+ A structure element dictionary shall contain the P (parent) entry according to ISO 32000-1:2008,
+ 14.7.2, Table 355
+ containsParent == true
+
+ A structure element dictionary does not contain the P (parent) entry
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml
new file mode 100644
index 00000000..7ef51532
--- /dev/null
+++ b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.10 Optional content - Name key present
+ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the
+ value of the Configs key in the OCProperties dictionary, shall contain the Name key
+
+
+
+
+
+ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the
+ value of the Configs key in the OCProperties dictionary, shall contain the Name key
+ Name != null && Name.length() > 0
+
+ Missing or empty Name entry of the optional content configuration dictionary
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml
new file mode 100644
index 00000000..9ebfa69f
--- /dev/null
+++ b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-1:2014 - 7.10 Optional content - AS key
+ The AS key shall not appear in any optional content configuration dictionary
+
+
+
+
+
+ The AS key shall not appear in any optional content configuration dictionary
+ AS == null
+
+ AS key is present in the optional content configuration dictionary
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml b/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml
new file mode 100644
index 00000000..24a00ab0
--- /dev/null
+++ b/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.11 Embedded files - F and UF keys
+ The file specification dictionary for an embedded file shall contain the non-empty F and UF keys
+
+
+
+
+
+ The file specification dictionary for an embedded file shall contain the non-empty F and UF keys
+ containsEF == false || (F != null && F != '' && UF != null && UF != '')
+
+ The file specification dictionary for an embedded file does not contain either F or UF key or
+ at least one of the keys is empty (F = %1, UF = %2)
+
+ F
+ UF
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.15 XFA/verapdf-profile-7-15-t01.xml b/PDF_UA/1/7.15 XFA/verapdf-profile-7-15-t01.xml
new file mode 100644
index 00000000..9e4cf7ad
--- /dev/null
+++ b/PDF_UA/1/7.15 XFA/verapdf-profile-7-15-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-1:2014 - 7.15 XFA - DynamicRender
+ Dynamic XFA forms shall not be used
+
+
+
+
+
+ Dynamic XFA forms shall not be used
+ dynamicRender != 'required'
+
+ Dynamic XFA forms is present
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml b/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml
new file mode 100644
index 00000000..b5bd322d
--- /dev/null
+++ b/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml
@@ -0,0 +1,30 @@
+
+
+
+ ISO 14289-1:2014 - 7.16 Security - P key
+ An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008,
+ 7.6.3.2, Table 21). The 10th bit position of the P key shall be true
+
+
+
+
+
+ An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008,
+ 7.6.3.2, Table 21). The 10th bit position of the P key shall be true
+ P != null && (P & 512) == 512
+
+ The file is encrypted but does not contain a P entry in its encryption dictionary or
+ the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false
+ (P = %1, 10th bit = %2)
+
+ P
+ P != null ? (P & 512) >> 9 : null
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml
new file mode 100644
index 00000000..9e98a618
--- /dev/null
+++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.1 General - Annot tag
+ An annotation, excluding annotations of subtype Widget, PrinterMark or Link, shall be nested within an Annot tag
+
+
+
+
+
+ An annotation, excluding annotations of subtype Widget, PrinterMark or Link, shall be nested within an Annot tag
+ Subtype == 'Widget' || Subtype == 'PrinterMark' || Subtype == 'Link' || isOutsideCropBox == true ||
+ (F & 2) == 2 || structParentStandardType == 'Annot'
+
+ %1 annotation is an Artifact or is nested within %2 tag (standard type = %3) instead of Annot
+
+ Subtype
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml
new file mode 100644
index 00000000..b75377c4
--- /dev/null
+++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 14289-1:2014 - 7.18 Annotation - 7.18.1 General - Alt in annotation
+ An annotation (except Widget annotations or hidden annotations,
+ or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry
+ in the enclosing structure element
+
+
+
+
+
+ An annotation (except Widget annotations or hidden annotations,
+ or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry
+ in the enclosing structure element
+ Subtype == 'Widget' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') ||
+ (Alt != null && Alt != '')
+
+ %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box
+ has neither Contents key nor an Alt entry in the enclosing structure element
+
+ Subtype
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml
new file mode 100644
index 00000000..189866af
--- /dev/null
+++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 14289-1:2014 - 7.18 Annotation - 7.18.1 General - Alt in form field
+ A form field shall have a TU key present or all its Widget annotations shall have alternative
+ descriptions (in the form of an Alt entry in the enclosing structure elements)
+
+
+
+
+
+ A form field shall have a TU key present or all its Widget annotations shall have alternative
+ descriptions (in the form of an Alt entry in the enclosing structure elements)
+ isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '')
+
+ A form field neither has TU key nor its Widget annotations have alternative descriptions
+ (in the form of an Alt entry in the enclosing structure element)
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t01.xml
new file mode 100644
index 00000000..2605c3de
--- /dev/null
+++ b/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.2 Annotation types - TrapNext
+ Annotations of subtype TrapNet shall not be permitted
+
+
+
+
+
+ Annotations of subtype TrapNet shall not be permitted
+ isOutsideCropBox == true || (F & 2) == 2
+
+ An annotation of subtype TrapNet exists
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml
new file mode 100644
index 00000000..e7bc8f46
--- /dev/null
+++ b/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.3 Tab order - Tabs in page with annotations
+ Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S
+
+
+
+
+
+ Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S
+ annots_size == 0 || Tabs == 'S'
+
+ A page with annotation(s) contains Tabs key with value %1 instead of S
+
+ Tabs
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml
new file mode 100644
index 00000000..475560ae
--- /dev/null
+++ b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.4 Forms - Widget annotation
+ A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340
+
+
+
+
+
+ A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340
+ structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2
+
+ A Widget annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Form
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t02.xml
new file mode 100644
index 00000000..43485741
--- /dev/null
+++ b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t02.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.4 Forms - Widget annotation
+ If the Form element omits a Role attribute (Table 348), it shall have
+ only one child: an object reference (14.7.4.3) identifying the widget annotation
+ per ISO 32000-1:2008, 14.8.4.5, Table 340
+
+
+
+
+
+ If the Form element omits a Role attribute (Table 348), it shall have
+ only one child: an object reference (14.7.4.3) identifying the widget annotation
+ per ISO 32000-1:2008, 14.8.4.5, Table 340
+ roleAttribute != null || hasOneInteractiveChild == true
+
+ The Form element omits a Role attribute and doesn't have only one child identifying
+ the widget annotation
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml
new file mode 100644
index 00000000..0c6fa2e3
--- /dev/null
+++ b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.5 Links - Link annotation
+ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element
+
+
+
+
+
+ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element
+ structParentStandardType == 'Link' || isOutsideCropBox == true || (F & 2) == 2
+
+ A Link annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Link
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml
new file mode 100644
index 00000000..76209c87
--- /dev/null
+++ b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.5 Links - Contents key
+ Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3
+
+
+
+
+
+ Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3
+ (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2
+
+ A link annotation does not include an alternate description in the Contents Key
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml
new file mode 100644
index 00000000..c5dc8fc4
--- /dev/null
+++ b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.6.2 Media clip data - CT in media clip dictionary
+ In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274)
+ is required
+
+
+
+
+
+ In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274)
+ is required
+ CT != null
+
+ CT key is missing from the media clip data dictionary
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml
new file mode 100644
index 00000000..d415e512
--- /dev/null
+++ b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.6.2 Media clip data - Alt in media clip dictionary
+ In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274)
+ is required
+
+
+
+
+
+ In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274)
+ is required
+ hasCorrectAlt == true
+
+ Alt key (value %1) is missing from the media clip data dictionary or has incorrect value
+
+ Alt
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml
new file mode 100644
index 00000000..eacd2cae
--- /dev/null
+++ b/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.8 PrinterMark - Logical structure
+ PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page
+ elements as defined in ISO 32000-1:2008, 14.8.2.2.3
+
+
+
+
+
+ PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page
+ elements as defined in ISO 32000-1:2008, 14.8.2.2.3
+ structParentType == null || isOutsideCropBox == true || (F & 2) == 2
+
+ A PrinterMark annotation is included in logical structure
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml
new file mode 100644
index 00000000..ce4c2f3a
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Lang in Outlines
+ Natural language in the Outline entries shall be determined
+
+
+
+
+
+ Natural language in the Outline entries shall be determined
+ gSizeCatalogLang != 0
+
+ Natural language in the Outline entries cannot be determined
+
+
+
+
+
+
+
+ 0
+ Lang_size
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml
new file mode 100644
index 00000000..7b5ca71a
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - children of Table
+ Table element may contain only TR, THead, TBody, TFoot and Caption elements
+
+
+
+
+
+ Table element may contain only TR, THead, TBody, TFoot and Caption elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead'
+ && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == ''
+
+ Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead'
+ && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString()
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml
new file mode 100644
index 00000000..e91d23a4
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - parent of TR
+ TR element should be contained in Table, THead, TBody or TFoot element
+
+
+
+
+
+ TR element should be contained in Table, THead, TBody or TFoot element
+ /^(Table|THead|TBody|TFoot)$/.test(parentStandardType)
+
+ TR element contained in %1 instead of Table, THead, TBody or TFoot element
+
+ parentStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t05.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t05.xml
new file mode 100644
index 00000000..837c55cd
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t05.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - parent of THead
+ THead element should be contained in Table element
+
+
+
+
+
+ THead element should be contained in Table element
+ parentStandardType == 'Table'
+
+ THead element contained in %1 instead of Table element
+
+ parentStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t06.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t06.xml
new file mode 100644
index 00000000..2c9f8a2d
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t06.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - parent of TBody
+ TBody element should be contained in Table element
+
+
+
+
+
+ TBody element should be contained in Table element
+ parentStandardType == 'Table'
+
+ TBody element contained in %1 instead of Table element
+
+ parentStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t07.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t07.xml
new file mode 100644
index 00000000..b995cde7
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t07.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - parent of TFoot
+ TFoot element should be contained in Table element
+
+
+
+
+
+ TFoot element should be contained in Table element
+ parentStandardType == 'Table'
+
+ TFoot element contained in %1 instead of Table element
+
+ parentStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t08.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t08.xml
new file mode 100644
index 00000000..3f3e10e6
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t08.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - parent of TH
+ TH element should be contained in TR element
+
+
+
+
+
+ TH element should be contained in TR element
+ parentStandardType == 'TR'
+
+ TH element contained in %1 instead of TR element
+
+ parentStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t09.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t09.xml
new file mode 100644
index 00000000..dd609574
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t09.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - parent of TD
+ TD element should be contained in TR element
+
+
+
+
+
+ TD element should be contained in TR element
+ parentStandardType == 'TR'
+
+ TD element contained in %1 instead of TR element
+
+ parentStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t10.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t10.xml
new file mode 100644
index 00000000..1c822f10
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t10.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - children of TR
+ TR element may contain only TH and TD elements
+
+
+
+
+
+ TR element may contain only TH and TD elements
+ /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == ''
+
+ TR element contains %1 element(s) instead of TH or TD
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString()
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml
new file mode 100644
index 00000000..6c7a532f
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - count of THead
+ Table element should contain zero or one THead kid
+
+
+
+
+
+ Table element should contain zero or one THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1
+
+ Table element contains more than one THead kid
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t12.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t12.xml
new file mode 100644
index 00000000..7f63de98
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t12.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - count of TFoot
+ Table element should contain zero or one TFoot kid
+
+
+
+
+
+ Table element should contain zero or one TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1
+
+ Table element contains more than one TFoot kid
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml
new file mode 100644
index 00000000..045c181e
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - TFoot and TBody
+ If Table element contains TFoot kid, Table element should contain one or more TBody kids
+
+
+
+
+
+ If Table element contains TFoot kid, Table element should contain one or more TBody kids
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 ||
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0
+
+ Table element contains TFoot kid, but does not contain TBody kids
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t14.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t14.xml
new file mode 100644
index 00000000..680d2757
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t14.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - THead and TBody
+ If Table element contains THead kid, Table element should contain one or more TBody kids
+
+
+
+
+
+ If Table element contains THead kid, Table element should contain one or more TBody kids
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 ||
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0
+
+ Table element contains THead kid, but does not contain TBody kids
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t15.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t15.xml
new file mode 100644
index 00000000..7a5fc809
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t15.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Intersections of cells
+ A table cell shall not have intersection with other cells
+
+
+
+
+
+ A table cell shall not have intersection with other cells
+ hasIntersection != true
+
+ Table cell has intersection with other cells
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t16.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t16.xml
new file mode 100644
index 00000000..80419087
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t16.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Caption of Table
+ Table element may contain a Caption element as its first or last kid
+
+
+
+
+
+ Table element may contain a Caption element as its first or last kid
+ kidsStandardTypes.indexOf('&Caption&') < 0
+
+ Table element contains Caption as its %1 child instead of first or last one
+
+ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17.xml
new file mode 100644
index 00000000..4b33fd23
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - parent of LI
+ LI element should be contained in L element
+
+
+
+
+
+ LI element should be contained in L element
+ parentStandardType == 'L'
+
+ LI element contained in %1 instead of L element
+
+ parentStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t18.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t18.xml
new file mode 100644
index 00000000..5cf0e259
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t18.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - parent of LBody
+ LBody element should be contained in LI element
+
+
+
+
+
+ LBody element should be contained in LI element
+ parentStandardType == 'LI'
+
+ LBody element contained in %1 instead of LI element
+
+ parentStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t19.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t19.xml
new file mode 100644
index 00000000..66eef864
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t19.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - children of L
+ L element may contain only L, LI and Caption elements
+
+
+
+
+
+ L element may contain only L, LI and Caption elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI'
+ && elem != 'Caption').length == 0 || kidsStandardTypes == ''
+
+ L element contains %1 element(s) instead of L, LI or Caption
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI'
+ && elem != 'Caption').toString()
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t20.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t20.xml
new file mode 100644
index 00000000..bdb446bc
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t20.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - children of LI
+ LI element may contain only Lbl and LBody elements
+
+
+
+
+
+ LI element may contain only Lbl and LBody elements
+ /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == ''
+
+ LI element contains %1 element(s) instead of Lbl or LBody
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString()
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml
new file mode 100644
index 00000000..340a9734
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Lang for ActualText
+ Natural language for text in ActualText attribute shall be determined
+
+
+
+
+
+ Natural language for text in ActualText attribute shall be determined
+ ActualText == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in ActualText attribute cannot be determined
+
+
+
+
+
+
+
+ 0
+ Lang_size
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml
new file mode 100644
index 00000000..39cce47a
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Lang for Alt
+ Natural language for text in Alt attribute shall be determined
+
+
+
+
+
+ Natural language for text in Alt attribute shall be determined
+ Alt == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in Alt attribute cannot be determined
+
+
+
+
+
+
+
+ 0
+ Lang_size
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml
new file mode 100644
index 00000000..f6e465ad
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Lang for E
+ Natural language for text in E attribute shall be determined
+
+
+
+
+
+ Natural language for text in E attribute shall be determined
+ E == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in E attribute cannot be determined
+
+
+
+
+
+
+
+ 0
+ Lang_size
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml
new file mode 100644
index 00000000..d594f39c
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Lang in Contents
+ Natural language in the Contents entry for annotations shall be
+ determined
+
+
+
+
+
+ Natural language in the Contents entry for annotations shall be
+ determined
+ Contents == null || Lang_size != 0 || gSizeCatalogLang != 0
+
+ Natural language in the Contents entry for annotations cannot be
+ determined
+
+
+
+
+
+
+
+ 0
+ Lang_size
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t25.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t25.xml
new file mode 100644
index 00000000..d9b3acb7
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t25.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Lang in TU key
+ Natural language in the TU key for form fields shall be determined
+
+
+
+
+
+ Natural language in the TU key for form fields shall be determined
+ TU == null || Lang_size != 0 || gSizeCatalogLang != 0
+
+ Natural language in the TU key for form fields cannot be determined
+
+
+
+
+
+
+
+ 0
+ Lang_size
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26.xml
new file mode 100644
index 00000000..155c4b7b
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - parent of TOCI
+ TOCI element should be contained in TOC element
+
+
+
+
+
+ TOCI element should be contained in TOC element
+ parentStandardType == 'TOC'
+
+ TOCI element contained in %1 instead of TOC element
+
+ parentStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t27.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t27.xml
new file mode 100644
index 00000000..fe0004f2
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t27.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - children of TOC
+ TOC element may contain only TOC, TOCI and Caption elements
+
+
+
+
+
+ TOC element may contain only TOC, TOCI and Caption elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI'
+ && elem != 'Caption').length == 0 || kidsStandardTypes == ''
+
+ TOC element contains %1 element(s) instead of TOC, TOCI or Caption
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI'
+ && elem != 'Caption').toString()
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t28.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t28.xml
new file mode 100644
index 00000000..b2b33d2c
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t28.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Caption of TOC
+ TOC element may contain a Caption element only as its first kid
+
+
+
+
+
+ TOC element may contain a Caption element only as its first kid
+ kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0
+
+ TOC element contains Caption as its %1 child instead of first one
+
+ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml
new file mode 100644
index 00000000..370caf17
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml
@@ -0,0 +1,30 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Natural language specification
+ If the Lang entry is present in the document's Catalog dictionary or in a structure element dictionary or
+ property list, its value shall be a language identifier as described in ISO 32000-1:2008, 14.9.2.
+ A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages
+
+
+
+
+
+ If the Lang entry is present in the document's Catalog dictionary or in a structure element dictionary or
+ property list, its value shall be a language identifier as described in ISO 32000-1:2008, 14.9.2.
+ A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages
+ /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue)
+
+ Value %1 of the Lang entry is not a Language-Tag
+
+ unicodeValue
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml
new file mode 100644
index 00000000..5ba330ce
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Lang for ActualText in Span
+ Natural language for text in ActualText attribute shall be determined
+
+
+
+
+
+ Natural language for text in ActualText attribute in Span Marked Content shall be determined
+ tag != 'Span' || ActualText == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in ActualText attribute in Span Marked Content cannot be determined
+
+
+
+
+
+
+
+ 0
+ Lang_size
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml
new file mode 100644
index 00000000..d6404da1
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Lang for Alt in Span
+ Natural language for text in Alt attribute shall be determined
+
+
+
+
+
+ Natural language for text in Alt attribute in Span Marked Content shall be determined
+ tag != 'Span' || Alt == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in Alt attribute in Span Marked Content cannot be determined
+
+
+
+
+
+
+
+ 0
+ Lang_size
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml
new file mode 100644
index 00000000..f97af42d
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Lang for E in Span
+ Natural language for text in E attribute shall be determined
+
+
+
+
+
+ Natural language for text in E attribute in Span Marked Content shall be determined
+ tag != 'Span' || E == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in E attribute in Span Marked Content cannot be determined
+
+
+
+
+
+
+
+ 0
+ Lang_size
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml
new file mode 100644
index 00000000..b17eb48a
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Lang for metadata
+ Natural language for document metadata shall be determined
+
+
+
+
+
+ Natural language for document metadata shall be determined
+ xDefault == false || gSizeCatalogLang != 0
+
+ Natural language for document metadata cannot be determined
+
+
+
+
+
+
+
+ 0
+ Lang_size
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t34.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t34.xml
new file mode 100644
index 00000000..aafa6047
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t34.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Lang for text
+ Natural language for text in page content shall be determined
+
+
+
+
+
+ Natural language for text in page content shall be determined
+ gSizeCatalogLang != 0 || Lang != null
+
+ Natural language for text in page content cannot be determined
+
+
+
+
+
+
+
+ 0
+ Lang_size
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36.xml
new file mode 100644
index 00000000..cb64a287
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - children of THead
+ THead element may contain only TR elements
+
+
+
+
+
+ THead element may contain only TR elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == ''
+
+ THead element contains %1 element(s) instead of TR
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString()
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t37.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t37.xml
new file mode 100644
index 00000000..c9037517
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t37.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - children of TBody
+ TBody element may contain only TR elements
+
+
+
+
+
+ TBody element may contain only TR elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == ''
+
+ TBody element contains %1 element(s) instead of TR
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString()
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t38.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t38.xml
new file mode 100644
index 00000000..6ca7e831
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t38.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - children of TFoot
+ TFoot element may contain only TR elements
+
+
+
+
+
+ TFoot element may contain only TR elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == ''
+
+ TFoot element contains %1 element(s) instead of TR
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString()
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t39.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t39.xml
new file mode 100644
index 00000000..d08148b3
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t39.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Caption of Table
+ Table element may contain only one Caption element
+
+
+
+
+
+ Table element may contain only one Caption element
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2
+
+ Table element contains %1 Caption elements instead of one
+
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t40.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t40.xml
new file mode 100644
index 00000000..44ba5230
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t40.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Caption of List
+ L element may contain a Caption element only as its first kid
+
+
+
+
+
+ L element may contain a Caption element only as its first kid
+ kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0
+
+ L element contains Caption as its %1 child instead of first one
+
+ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t41.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t41.xml
new file mode 100644
index 00000000..48cf3f8e
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t41.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Regular Table
+ Table columns shall have the same number of rows (taking into account row spans)
+
+
+
+
+
+ Table columns shall have the same number of rows (taking into account row spans)
+ numberOfColumnWithWrongRowSpan == null
+
+ Table columns 1 and %1 span different number of rows
+
+ numberOfColumnWithWrongRowSpan + 1
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t42.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t42.xml
new file mode 100644
index 00000000..76662fec
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t42.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Regular Table
+ Table rows shall have the same number of columns (taking into account column spans)
+
+
+
+
+
+ Table rows shall have the same number of columns (taking into account column spans)
+ numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null
+
+ Table rows 1 and %1 span different number of columns
+
+ numberOfRowWithWrongColumnSpan + 1
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t43.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t43.xml
new file mode 100644
index 00000000..594e7e4a
--- /dev/null
+++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t43.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Regular Table
+ Table rows shall have the same number of columns (taking into account column spans)
+
+
+
+
+
+ Table rows shall have the same number of columns (taking into account column spans)
+ numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null
+
+ Table rows 1 and %1 span different number of columns (%2 and %3 respectively)
+
+ numberOfRowWithWrongColumnSpan + 1
+ columnSpan
+ wrongColumnSpan
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml
new file mode 100644
index 00000000..9bb299f3
--- /dev/null
+++ b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-1:2014 - 7.20 XObjects - Reference XObjects
+ A conforming file shall not contain any reference XObjects
+
+
+
+
+
+ A conforming file shall not contain any reference XObjects
+ containsRef == false
+
+ The document contains a reference XObject (Ref key in the form XObject dictionary)
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t02.xml b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t02.xml
new file mode 100644
index 00000000..1ea2c92e
--- /dev/null
+++ b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t02.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.20 XObjects - MCID
+ The content of Form XObjects shall be incorporated into structure elements according to
+ ISO 32000-1:2008, 14.7.2
+
+
+
+
+
+ The content of Form XObjects shall be incorporated into structure elements according to
+ ISO 32000-1:2008, 14.7.2
+ isUniqueSemanticParent == true
+
+ Form XObject contains MCIDs and is referenced more than once
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml
new file mode 100644
index 00000000..07d04ea0
--- /dev/null
+++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml
@@ -0,0 +1,42 @@
+
+
+
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CIDSystemInfo
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary
+ shall have the following relationship:
+ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering,
+ and Supplement may be used in the CIDSystemInfo entry of the CIDFont.
+ - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in
+ the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap
+
+
+
+
+
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary
+ shall have the following relationship:
+ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering,
+ and Supplement may be used in the CIDSystemInfo entry of the CIDFont.
+ - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in
+ the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null &&
+ CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry &&
+ CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement)
+
+ CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible
+ (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3,
+ CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+ CIDFontSupplement
+ CMapSupplement
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml
new file mode 100644
index 00000000..68549949
--- /dev/null
+++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CIDToGIDMap
+ ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a
+ CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-1:2008, 9.7.4, Table 117
+
+
+
+
+
+ ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a
+ CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-1:2008, 9.7.4, Table 117
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml
new file mode 100644
index 00000000..5e00c933
--- /dev/null
+++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml
@@ -0,0 +1,42 @@
+
+
+
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CMaps
+ All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described
+ in ISO 32000-1:2008, 9.7.5
+
+
+
+
+
+ All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described
+ in ISO 32000-1:2008, 9.7.5
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" ||
+ CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" ||
+ CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" ||
+ CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" ||
+ CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" ||
+ CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" ||
+ CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" ||
+ CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" ||
+ CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" ||
+ CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" ||
+ CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" ||
+ CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" ||
+ CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" ||
+ CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" ||
+ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" ||
+ embeddedFile_size == 1
+
+ A non-standard CMap %1 is not embedded
+
+ CMapName
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml
new file mode 100644
index 00000000..e516d032
--- /dev/null
+++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - WMode
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode
+ value in the embedded CMap stream
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value
+ in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml
new file mode 100644
index 00000000..d161df4d
--- /dev/null
+++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml
@@ -0,0 +1,40 @@
+
+
+
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CMaps
+ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118
+
+
+
+
+
+ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" ||
+ CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" ||
+ CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" ||
+ CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" ||
+ CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" ||
+ CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" ||
+ CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" ||
+ CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" ||
+ CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" ||
+ CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" ||
+ CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" ||
+ CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" ||
+ CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" ||
+ CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" ||
+ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" ||
+ CMapName == "UniKS-UTF16-V"
+
+ A CMap references another non-standard CMap %1
+
+ CMapName
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml
new file mode 100644
index 00000000..8192d450
--- /dev/null
+++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - General
+ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9
+
+
+
+
+
+ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t02.xml
new file mode 100644
index 00000000..de7e1f33
--- /dev/null
+++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t02.xml
@@ -0,0 +1,32 @@
+
+
+
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - Glyphs
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file.
+ A font referenced solely in text rendering mode 3 is not rendered and is thus exempt from the requirements
+ that impact the visual representation of the glyphs of a font. In all cases for TrueType fonts that are to
+ be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4
+ without the use of a non-standard mapping chosen by the conforming processor
+
+
+
+
+
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file.
+ A font referenced solely in text rendering mode 3 is not rendered and is thus exempt from the requirements
+ that impact the visual representation of the glyphs of a font. In all cases for TrueType fonts that are to
+ be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4
+ without the use of a non-standard mapping chosen by the conforming processor
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml
new file mode 100644
index 00000000..554a3360
--- /dev/null
+++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - CharSet entry in Type1 fonts
+ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs
+ present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs
+ present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true
+
+ A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml
new file mode 100644
index 00000000..65b25114
--- /dev/null
+++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - CIDSet entry in CID Fonts
+ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program,
+ regardless of whether a CID in the font is referenced or used by the PDF or not
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program,
+ regardless of whether a CID in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true
+
+ A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml
new file mode 100644
index 00000000..fb83f764
--- /dev/null
+++ b/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.5 Font metrics - Font metrics
+ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded
+ font program shall be consistent
+
+
+
+
+
+ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded
+ font program shall be consistent
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null ||
+ Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml
new file mode 100644
index 00000000..4d0d7ba1
--- /dev/null
+++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - cmaps for non-symbolic TrueType fonts
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic
+ cmap entries such that all necessary glyph lookups can be carried out
+
+
+
+
+
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic
+ cmap entries such that all necessary glyph lookups can be carried out
+ isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0)
+
+ The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml
new file mode 100644
index 00000000..71957452
--- /dev/null
+++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml
@@ -0,0 +1,37 @@
+
+
+
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - Non-symbolic TrueType fonts
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the
+ value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the
+ dictionary which is the value of the Encoding key in the Font dictionary. In addition, no non-symbolic
+ TrueType font shall define a Differences array unless all of the glyph names in the Differences array
+ are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft
+ Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' table
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the
+ value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the
+ dictionary which is the value of the Encoding key in the Font dictionary. In addition, no non-symbolic
+ TrueType font shall define a Differences array unless all of the glyph names in the Differences array
+ are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft
+ Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' table
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") &&
+ (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List
+ (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml
new file mode 100644
index 00000000..65f0f3b5
--- /dev/null
+++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - Symbolic TrueType fonts
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+
+
+
+
+
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml
new file mode 100644
index 00000000..d0127e7d
--- /dev/null
+++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - cmaps in the symbolic TrueType font program
+ The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either
+ exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3,
+ Encoding ID=0) encoding
+
+
+
+
+
+ The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either
+ exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3,
+ Encoding ID=0) encoding
+ isSymbolic == false || nrCmaps == 1 || cmap30Present == true
+
+ The embedded font program for a symbolic TrueType font contains %1 cmap subtables and
+ does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0)
+
+ nrCmaps
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml
new file mode 100644
index 00000000..dd871b7d
--- /dev/null
+++ b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.7 Unicode character maps - Unicode mapping
+ The Font dictionary of all fonts shall define the map of all used character codes to Unicode values, either via a ToUnicode entry,
+ or other mechanisms as defined in ISO 14289-1, 7.21.7
+
+
+
+
+
+ The Font dictionary of all fonts shall define the map of all used character codes to Unicode values, either via a ToUnicode entry,
+ or other mechanisms as defined in ISO 14289-1, 7.21.7
+ toUnicode != null
+
+ The glyph can not be mapped to Unicode
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml
new file mode 100644
index 00000000..6a2adfde
--- /dev/null
+++ b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.7 Unicode character maps - Valid Unicode values
+ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE
+
+
+
+
+
+ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE
+ toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1)
+
+ The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml
new file mode 100644
index 00000000..01ee9848
--- /dev/null
+++ b/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.8 Use of .notdef glyph - Use of .notdef glyph
+ A PDF/UA compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators,
+ regardless of text rendering mode, in any content stream
+
+
+
+
+
+ A PDF/UA compliant document shall not contain a reference to the .notdef glyph from any of the text showing
+ operators, regardless of text rendering mode, in any content stream
+ name != ".notdef"
+
+ The document contains a reference to the .notdef glyph
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml
new file mode 100644
index 00000000..c61f5bf5
--- /dev/null
+++ b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.3 Graphics - Figure alternative and replacement text
+ Figure tags shall include an alternative representation or replacement text that represents the contents
+ marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323
+
+
+
+
+
+ Figure tags shall include an alternative representation or replacement text that represents the contents
+ marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323
+ (Alt != null && Alt != '') || ActualText != null
+
+ Figure structure element neither has an alternate description nor a replacement text
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml b/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml
new file mode 100644
index 00000000..6f682c1c
--- /dev/null
+++ b/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml
@@ -0,0 +1,41 @@
+
+
+
+ ISO 14289-1:2014 - 7.4 Headings - 7.4.2 Numbered headings - Numbered heading tags
+ For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5,
+ heading tags shall be used as follows:
+ (*) If any heading tags are used, H1 shall be the first.
+ (*) A document may use more than one instance of any specific tag level. For example, a tag level may
+ be repeated if document content requires it.
+ (*) If document semantics require a descending sequence of headers, such a sequence shall proceed
+ in strict numerical order and shall not skip an intervening heading level.
+ (*) A document may increment its heading sequence without restarting at H1 if document semantics
+ require it
+
+
+
+
+
+ For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5,
+ heading tags shall be used as follows:
+ (*) If any heading tags are used, H1 shall be the first.
+ (*) A document may use more than one instance of any specific tag level. For example, a tag level may
+ be repeated if document content requires it.
+ (*) If document semantics require a descending sequence of headers, such a sequence shall proceed
+ in strict numerical order and shall not skip an intervening heading level.
+ (*) A document may increment its heading sequence without restarting at H1 if document semantics
+ require it
+ hasCorrectNestingLevel == true
+
+ Heading level %1 is skipped in a descending sequence of header levels
+
+ nestingLevel - 1
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml
new file mode 100644
index 00000000..44faf7b3
--- /dev/null
+++ b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - Number of H
+ Each node in the tag tree shall contain at most one child H tag
+
+
+
+
+
+ Each node in the tag tree shall contain at most one child H tag
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ A node contains more than one H tag
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml
new file mode 100644
index 00000000..ae797cce
--- /dev/null
+++ b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - H and Hn
+ All documents shall be either strongly or weakly structured, but not both
+
+
+
+
+
+ All documents shall be either strongly or weakly structured, but not both
+ usesHn == false
+
+ Document uses both H and H# tags
+
+
+
+
+
+
+
+ false
+ true
+
+
+
diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml
new file mode 100644
index 00000000..2b0cc148
--- /dev/null
+++ b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - H and Hn
+ All documents shall be either strongly or weakly structured, but not both
+
+
+
+
+
+ All documents shall be either strongly or weakly structured, but not both
+ usesH == false
+
+ Document uses both H and H# tags
+
+
+
+
+
+
+
+ false
+ true
+
+
+
diff --git a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml
new file mode 100644
index 00000000..71d448c8
--- /dev/null
+++ b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.5 Tables - Headers, IDs and Scope
+ If the table's structure is not determinable via Headers and IDs,
+ then structure elements of type TH shall have a Scope attribute
+
+
+
+
+
+ If the table's structure is not determinable via Headers and IDs,
+ then structure elements of type TH shall have a Scope attribute
+ hasConnectedHeader != false || unknownHeaders != ''
+
+ TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml
new file mode 100644
index 00000000..83584e9e
--- /dev/null
+++ b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.5 Tables - Headers, IDs and Scope
+ If the table's structure is not determinable via Headers and IDs,
+ then structure elements of type TH shall have a Scope attribute
+
+
+
+
+
+ If the table's structure is not determinable via Headers and IDs,
+ then structure elements of type TH shall have a Scope attribute
+ hasConnectedHeader != false || unknownHeaders == ''
+
+ TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically
+
+ unknownHeaders
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml b/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml
new file mode 100644
index 00000000..493da114
--- /dev/null
+++ b/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.7 Mathematical expressions - Alt and ActualText in Formula
+ All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008,
+ 14.8.4.5 and shall have Alt or ActualText attributes
+
+
+
+
+
+ All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008,
+ 14.8.4.5 and shall have Alt or ActualText attributes
+ (Alt != null && Alt != '') || ActualText != null
+
+ Formula structure element neither has an alternate description nor a replacement text
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml
new file mode 100644
index 00000000..4a9d8787
--- /dev/null
+++ b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-1:2014 - 7.9 Notes and references - ID
+ Note tag shall have ID entry
+
+
+
+
+
+ Note tag shall have ID entry
+ noteID != null && noteID != ''
+
+ ID key of the Note tag is not present
+
+
+
+
+
+
+
diff --git a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml
new file mode 100644
index 00000000..3c856a24
--- /dev/null
+++ b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.9 Notes and references - Unique id
+ Each Note tag shall have unique ID key
+
+
+
+
+
+ Each Note tag shall have unique ID key
+ hasDuplicateNoteID == false
+
+ ID key %1 of the Note tag is non-unique
+
+ noteID
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t01.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t01.xml
new file mode 100644
index 00000000..6fe17ba2
--- /dev/null
+++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-2:2024 - 5 Version identification - PDF/UA Identification Schema
+ The PDF/UA version of a file shall be specified in the value of the Metadata entry in the document catalog using the PDF/UA identification schema
+
+
+
+
+
+ The PDF/UA version of a file shall be specified in the value of the Metadata entry in the document catalog using the PDF/UA identification schema
+ UAIdentification_size == 1
+
+ The document metadata stream doesn't contains PDF/UA Identification Schema
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml
new file mode 100644
index 00000000..e86c79ff
--- /dev/null
+++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-2:2024 - 5 Version identification - Part number
+ The value of "pdfuaid:part" shall be the part number of the International Standard to which the file
+ conforms
+
+
+
+
+
+ The value of "pdfuaid:part" shall be the part number of the International Standard to which the
+ file conforms
+ part == 2
+
+ The "part" property of the PDF/UA Identification Schema is %1 instead of 2 for
+ PDF/UA-2 conforming file
+
+ part
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml
new file mode 100644
index 00000000..48e23b66
--- /dev/null
+++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-2:2024 - 5 Version identification - part prefix
+ Property "part" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
+
+
+
+
+
+ Property "part" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
+ partPrefix == null || partPrefix == "pdfuaid"
+
+ Property "part" of the PDF/UA Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml
new file mode 100644
index 00000000..684cb11b
--- /dev/null
+++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-2:2024 - 5 Version identification - rev prefix
+ Property "rev" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
+
+
+
+
+
+ Property "rev" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
+ revPrefix == null || revPrefix == "pdfuaid"
+
+ Property "rev" of the PDF/UA Identification Schema has invalid namespace prefix %1
+
+ revPrefix
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml
new file mode 100644
index 00000000..5459760b
--- /dev/null
+++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-2:2024 - 5 Version identification - rev property
+ The value of "pdfuaid:rev" shall be the four digit year
+
+
+
+
+
+ The value of "pdfuaid:rev" shall be the four digit year
+ /^\d{4}$/.test(rev)
+
+ The value of "pdfuaid:rev" (%1) is not the four digit year
+
+ rev
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t01.xml b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t01.xml
new file mode 100644
index 00000000..1a7f69ae
--- /dev/null
+++ b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t01.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-2:2024 - 8.10 Forms - 8.10.1 General - Form structure element
+ Each widget annotation shall be enclosed by a Form structure element unless the widget annotation
+ is an artifact
+
+
+
+
+
+ Each widget annotation shall be enclosed by a Form structure element unless the widget
+ annotation is an artifact
+ structParentType == null || structParentStandardType == 'Form' || isArtifact == true
+
+ A Widget annotation is nested within %1 tag (standard type = %2) instead of Form or Artifact
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml
new file mode 100644
index 00000000..fd2809bc
--- /dev/null
+++ b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-2:2024 - 8.10 Forms - 8.10.1 General - Widget annotations count
+ A Form structure element shall contain at most one widget annotation
+
+
+
+
+
+ A Form structure element shall contain at most one widget annotation
+ widgetAnnotsCount <= 1
+
+ A Form structure element contains %1 widget annotations
+
+ widgetAnnotsCount
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t03.xml b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t03.xml
new file mode 100644
index 00000000..52bb9361
--- /dev/null
+++ b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t03.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-2:2024 - 8.10 Forms - 8.10.1 General - XFA form
+ XFA forms shall not be present
+
+
+
+
+
+ XFA forms shall not be present
+ containsXFA == false
+
+ XFA form is present
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t01.xml b/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t01.xml
new file mode 100644
index 00000000..7b082d61
--- /dev/null
+++ b/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-2:2024 - 8.10 Forms - 8.10.2.3 Contents entry - Lbl
+ If a label for a widget annotation is not present, a Contents entry shall be provided to supply
+ description and context for the widget
+
+
+
+
+
+ If a label for a widget annotation is not present, a Contents entry shall be provided to supply
+ description and context for the widget
+ containsLbl == true || Contents != null
+
+ Widget annotation contains neither label nor Contents entry
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml b/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml
new file mode 100644
index 00000000..34b4f21e
--- /dev/null
+++ b/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-2:2024 - 8.10 Forms - 8.10.2.3 Contents entry - AA and Contents
+ If an additional action (AA) entry is present in a widget annotation dictionary, the respective
+ widget's Contents entry shall be present
+
+
+
+
+
+ If an additional action (AA) entry is present in a widget annotation dictionary, the respective
+ widget's Contents entry shall be present
+ containsAA == false || Contents != null
+
+ Widget annotation dictionary contains an AA entry, but does not contain the Contents entry
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml b/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml
new file mode 100644
index 00000000..f623d136
--- /dev/null
+++ b/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 14289-2:2024 - 8.10 Forms - 8.10.3.3 Text fields - RV and V entries
+ For text fields, when an RV entry is present a V entry shall also be present, and they shall be
+ textually equivalent
+
+
+
+
+
+ For text fields, when an RV entry is present a V entry shall also be present, and they shall be
+ textually equivalent
+ containsRV == false || (V != null && RV == V)
+
+ Text field contains RV entry, but no V entry or they are not textually equivalent (RV = %1, V = %2)
+
+ RV
+ V
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.5 Signature fields/verapdf-profile-8-10-3-5-t01.xml b/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.5 Signature fields/verapdf-profile-8-10-3-5-t01.xml
new file mode 100644
index 00000000..c5f4a016
--- /dev/null
+++ b/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.5 Signature fields/verapdf-profile-8-10-3-5-t01.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 14289-2:2024 - 8.10 Forms - 8.10.3.5 Signature fields - Alt for the graphic
+ If a portion of the appearance of a signature is represented by a graphic, alternative text shall
+ be provided for that graphic
+
+
+
+
+
+ If a portion of the appearance of a signature is represented by a graphic, alternative text
+ shall be provided for that graphic
+ isSignature == false || Alt != null
+
+ A portion of the appearance of a signature is represented by a graphic, but alternative text
+ is not provided for that graphic
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.11 Metadata/8.11.1 General/verapdf-profile-8-11-1-t01.xml b/PDF_UA/2/8.11 Metadata/8.11.1 General/verapdf-profile-8-11-1-t01.xml
new file mode 100644
index 00000000..7988117a
--- /dev/null
+++ b/PDF_UA/2/8.11 Metadata/8.11.1 General/verapdf-profile-8-11-1-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-2:2024 - 8.11 Metadata - 8.11.1 General - Dc title
+ The Metadata stream as specified in ISO 32000-2:2020, 14.3 in the document catalog dictionary shall
+ contain a dc:title entry
+
+
+
+
+
+ The Metadata stream as specified in ISO 32000-2:2020, 14.3 in the document catalog dictionary
+ shall contain a dc:title entry
+ dc_title != null
+
+ Metadata stream does not contain dc:title
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.11 Metadata/8.11.2 Interactive aspects/verapdf-profile-8-11-2-t01.xml b/PDF_UA/2/8.11 Metadata/8.11.2 Interactive aspects/verapdf-profile-8-11-2-t01.xml
new file mode 100644
index 00000000..55ab9749
--- /dev/null
+++ b/PDF_UA/2/8.11 Metadata/8.11.2 Interactive aspects/verapdf-profile-8-11-2-t01.xml
@@ -0,0 +1,30 @@
+
+
+
+ ISO 14289-2:2024 - 8.11 Metadata - 8.11.2 Interactive aspects - DisplayDocTitle
+ The ViewerPreferences dictionary of the document catalog dictionary shall be present and shall
+ contain at least the DisplayDocTitle key with a value of true, as described in ISO 32000-2:2020, Table 147
+
+
+
+
+
+ The ViewerPreferences dictionary of the document catalog dictionary shall be present and shall
+ contain at least the DisplayDocTitle key with a value of true, as described in ISO 32000-2:2020, Table 147
+ DisplayDocTitle == true
+
+ ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is
+ set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1,
+ DisplayDocTitle = %2)
+
+ ViewerPreferences
+ DisplayDocTitle
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml b/PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml
new file mode 100644
index 00000000..69e29a03
--- /dev/null
+++ b/PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-2:2024 - 8.14 Use of embedded files - 8.14.1 Descriptions for embedded files - Desc entry
+ The Desc entry shall be present on all file specification dictionaries present in the EmbeddedFiles
+ name tree of a conforming document
+
+
+
+
+
+ The Desc entry shall be present on all file specification dictionaries present in the
+ EmbeddedFiles name tree of a conforming document
+ containsDesc == true || presentInEmbeddedFiles == false
+
+ The file specification dictionary for an embedded file does not contain Desc key
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t01.xml
new file mode 100644
index 00000000..a93adc9b
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.1 General - StructureTreeRoot
+ The logical structure of the conforming file shall be described by a structure hierarchy rooted
+ in the StructTreeRoot entry of the document catalog dictionary, as described in ISO 32000-2:2020, 14.7
+
+
+
+
+
+ The logical structure of the conforming file shall be described by a structure hierarchy rooted
+ in the StructTreeRoot entry of the document catalog dictionary, as described in ISO 32000-2:2020, 14.7
+ StructTreeRoot_size == 1
+
+ StructTreeRoot entry is not present in the document catalog
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml
new file mode 100644
index 00000000..2ec5f774
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.1 General - Struct element parent
+ A structure element dictionary shall contain the P (parent) entry according to ISO 32000-2:2020,
+ 14.7.2, Table 323
+
+
+
+
+
+ A structure element dictionary shall contain the P (parent) entry according to ISO 32000-2:2020,
+ 14.7.2, Table 323
+ containsParent == true
+
+ A structure element dictionary does not contain the P (parent) entry
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml
new file mode 100644
index 00000000..a2cf1f3c
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.2 Real content - Artifact or real content
+ Content that is not considered real shall be an artifact
+
+
+
+
+
+ Content that is not considered real shall be an artifact
+ isTaggedContent == true || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0
+
+ Content is neither marked as Artifact nor tagged as real content
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml
new file mode 100644
index 00000000..91fd393e
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml
@@ -0,0 +1,33 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.4 Structure types - Standard roles
+ All structure elements shall belong to, or be role mapped to, at least one of the following
+ namespaces specified in ISO 32000-2:2020, 14.8.6:
+ — the PDF 1.7 namespace;
+ — the PDF 2.0 namespace;
+ — the MathML namespace
+
+
+
+
+
+ All structure elements shall belong to, or be role mapped to, at least one of the following
+ namespaces specified in ISO 32000-2:2020, 14.8.6:
+ — the PDF 1.7 namespace;
+ — the PDF 2.0 namespace;
+ — the MathML namespace
+ isNotMappedToStandardType == false
+
+ Non-standard structure type %1 is not mapped to a standard type
+
+ valueS
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t02.xml
new file mode 100644
index 00000000..a6c2af86
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.4 Structure types - Circular mapping
+ A circular mapping shall not exist
+
+
+
+
+
+ A circular mapping shall not exist
+ circularMappingExist != true
+
+ A circular mapping exists for %1 structure type
+
+ valueS
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml
new file mode 100644
index 00000000..4201c177
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.4 Structure types - Same namespace mapping
+ Within a given explicitly provided namespace, structure types shall not be role mapped to other
+ structure types in the same namespace
+
+
+
+
+
+ Within a given explicitly provided namespace, structure types shall not be role mapped to other
+ structure types in the same namespace
+ roleMapToSameNamespaceTag == null
+
+ Structure type %1 is role mapped to other structure type in the same namespace
+
+ roleMapToSameNamespaceTag
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t04.xml b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t04.xml
new file mode 100644
index 00000000..fdae67d8
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t04.xml
@@ -0,0 +1,33 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.4 Structure types - Remapped standard types
+ All structure elements shall belong to, or be role mapped to, at least one of the following
+ namespaces specified in ISO 32000-2:2020, 14.8.6:
+ — the PDF 1.7 namespace;
+ — the PDF 2.0 namespace;
+ — the MathML namespace
+
+
+
+
+
+ All structure elements shall belong to, or be role mapped to, at least one of the following
+ namespaces specified in ISO 32000-2:2020, 14.8.6:
+ — the PDF 1.7 namespace;
+ — the PDF 2.0 namespace;
+ — the MathML namespace
+ remappedStandardType == null
+
+ The standard structure type %1 is remapped to a non-standard type
+
+ remappedStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.12 Heading (Hn) and (H)/verapdf-profile-8-2-5-12-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.12 Heading (Hn) and (H)/verapdf-profile-8-2-5-12-t01.xml
new file mode 100644
index 00000000..7b70bb42
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.12 Heading (Hn) and (H)/verapdf-profile-8-2-5-12-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.12 Heading (Hn) and (H) - H
+ Conforming files shall not use the H structure type
+
+
+
+
+
+ Conforming files shall not use the H structure type
+ false
+
+ Document uses H structure type
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t01.xml
new file mode 100644
index 00000000..399dc91e
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - Note
+ The Note standard structure type shall not be present in conforming documents unless role mapped to
+ a structure element in the PDF 2.0 namespace
+
+
+
+
+
+ The Note standard structure type shall not be present in conforming documents unless role
+ mapped to a structure element in the PDF 2.0 namespace
+ false
+
+ Document uses Note structure type
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml
new file mode 100644
index 00000000..99e5e7b8
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - Ref entry
+ Real content that refers to footnotes or endnotes (real content enclosed in FENote structure
+ elements) shall use the Ref entry on the referring structure element to reference the FENote. The
+ corresponding FENote shall also use the Ref entry to identify all citations that reference it
+
+
+
+
+
+ Real content that refers to footnotes or endnotes (real content enclosed in FENote structure
+ elements) shall use the Ref entry on the referring structure element to reference the FENote. The
+ corresponding FENote shall also use the Ref entry to identify all citations that reference it
+ orphanRefs == null
+
+ Ref entry in the FENote does not reference structure elements with object numbers %1, while
+ these structure elements reference this FENote
+
+ orphanRefs
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml
new file mode 100644
index 00000000..017d2045
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - Ref entry
+ Real content that refers to footnotes or endnotes (real content enclosed in FENote structure
+ elements) shall use the Ref entry on the referring structure element to reference the FENote. The
+ corresponding FENote shall also use the Ref entry to identify all citations that reference it
+
+
+
+
+
+ Real content that refers to footnotes or endnotes (real content enclosed in FENote structure
+ elements) shall use the Ref entry on the referring structure element to reference the FENote. The
+ corresponding FENote shall also use the Ref entry to identify all citations that reference it
+ ghostRefs == null
+
+ Ref entry in the FENote reference structure elements with object numbers %1, while
+ these structure elements do not reference this FENote
+
+ ghostRefs
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t04.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t04.xml
new file mode 100644
index 00000000..e6e2ebba
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t04.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - NoteType
+ The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None
+
+
+
+
+
+ The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None
+ NoteType == 'Footnote' || NoteType == 'Endnote' || NoteType == 'None'
+
+ NoteType attribute of the FENote structure element has value %1 instead of Footnote, Endnote or None
+
+ NoteType
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t01.xml
new file mode 100644
index 00000000..e32a1622
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t01.xml
@@ -0,0 +1,30 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.2 Document and DocumentFragment - Struct tree root child
+ The structure tree root shall contain a single Document structure element as its only child, as
+ specified in ISO 32000-2:2020, Annex L and ISO/TS 32005
+
+
+
+
+
+ The structure tree root shall contain a single Document structure element as its only child,
+ as specified in ISO 32000-2:2020, Annex L and ISO/TS 32005
+ kidsStandardTypes == 'Document'
+
+ The structure tree root contains %1 element(s) instead of a single Document structure element
+
+ kidsStandardTypes.replaceAll('&', ',')
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t02.xml
new file mode 100644
index 00000000..3245a2b3
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t02.xml
@@ -0,0 +1,31 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.2 Document and DocumentFragment - Struct tree root child
+ The structure tree root shall contain a single Document structure element as its only child.
+ The namespace for that element shall be specified as the PDF 2.0 namespace
+
+
+
+
+
+ The structure tree root shall contain a single Document structure element as its only child.
+ The namespace for that element shall be specified as the PDF 2.0 namespace
+ kidsStandardTypes != 'Document' || firstChildStandardTypeNamespaceURL == 'http://iso.org/pdf2/ssn'
+
+ The structure tree root contains a single Document structure element, but this element is not
+ within the PDF 2.0 namespace (namespace URI = %1)
+
+ firstChildStandardTypeNamespaceURL
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t01.xml
new file mode 100644
index 00000000..ebcde68c
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.20 Link and Reference - Link annotation
+ A link annotation and its associated content shall be enclosed in either a Link or Reference
+ structure element
+
+
+
+
+
+ A link annotation and its associated content shall be enclosed in either a Link or Reference
+ structure element
+ structParentStandardType == 'Link' || structParentStandardType == 'Reference'
+
+ A Link annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Link
+ or Reference
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t02.xml
new file mode 100644
index 00000000..48c82d56
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t02.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.20 Link and Reference - Different locations
+ Link annotations that target different locations shall be in separate Link or Reference
+ structure elements
+
+
+
+
+
+ Link annotations that target different locations shall be in separate Link or Reference
+ structure elements
+ differentTargetAnnotObjectKey == null
+
+ Struct element %1 contains Link annotations %1 and %2 that target different locations
+
+ structParentObjectKey
+ objectKey
+ differentTargetAnnotObjectKey
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t03.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t03.xml
new file mode 100644
index 00000000..32e1f7ba
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t03.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.20 Link and Reference - Same locations
+ Multiple link annotations shall be included in a single Link or Reference structure element if
+ they target the same location and are semantically perceived to be a single link
+
+
+
+
+
+ Multiple link annotations shall be included in a single Link or Reference structure element if
+ they target the same location and are semantically perceived to be a single link
+ sameTargetAnnotObjectKey == null
+
+ Annotations %1 and %2 target the same location, but are included into different structure elements
+
+ objectKey
+ sameTargetAnnotObjectKey
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.23 Ruby (Ruby, RB, RT, RP)/verapdf-profile-8-2-5-23-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.23 Ruby (Ruby, RB, RT, RP)/verapdf-profile-8-2-5-23-t01.xml
new file mode 100644
index 00000000..d2b00609
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.23 Ruby (Ruby, RB, RT, RP)/verapdf-profile-8-2-5-23-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.23 Ruby (Ruby, RB, RT, RP) - Ruby's children
+ A Ruby structure element shall contain a single RB structure element and a single RT structure
+ element or a Ruby structure element shall consist of a four-element subsequence: RB, RP, RT, RP
+
+
+
+
+
+ A Ruby structure element shall contain a single RB structure element and a single RT structure
+ element or a Ruby structure element shall consist of a four-element subsequence: RB, RP, RT, RP
+ kidsStandardTypes == 'RB&RT' || kidsStandardTypes == 'RB&RP&RT&RP'
+
+ The Ruby structure element has invalid sequence of children: %1
+
+ kidsStandardTypes.split('&').toString()
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.24 Warichu (WT, WP)/verapdf-profile-8-2-5-24-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.24 Warichu (WT, WP)/verapdf-profile-8-2-5-24-t01.xml
new file mode 100644
index 00000000..47e5ddd5
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.24 Warichu (WT, WP)/verapdf-profile-8-2-5-24-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.24 Warichu (WT, WP) - Warichu's children
+ Content typeset as warichu shall be tagged in a three-element sequence consisting of the structure
+ elements WP, WT and WP, grouped inside a Warichu structure element
+
+
+
+
+
+ Content typeset as warichu shall be tagged in a three-element sequence consisting of the
+ structure elements WP, WT and WP, grouped inside a Warichu structure element
+ kidsStandardTypes == 'WP&WT&WP'
+
+ The Warichu structure element has invalid sequence of children: %1
+
+ kidsStandardTypes.split('&').toString()
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t01.xml
new file mode 100644
index 00000000..0ea21b6a
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t01.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 logical structure - 8.2.5.25 List (L, LI, LBody) - ListNumbering attribute
+ If Lbl structure elements are present, the ListNumbering attribute shall be present on the
+ respective L structure element; in such cases the value None shall not be used
+
+
+
+
+
+ If Lbl structure elements are present, the ListNumbering attribute shall be present on the
+ respective L structure element; in such cases the value None shall not be used
+ containsLabels == false || ListNumbering != 'None'
+
+ List items contain Lbl structure elements, but the ListNumbering attribute is not present on
+ the respective L structure element or it has value None
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t02.xml
new file mode 100644
index 00000000..da226b7f
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t02.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 logical structure - 8.2.5.25 List (L, LI, LBody) - Real content within LI
+ Any real content within an LI structure element that is not enclosed in an Lbl structure element
+ shall be enclosed in an LBody structure element
+
+
+
+
+
+ Any real content within an LI structure element that is not enclosed in an Lbl structure
+ element shall be enclosed in an LBody structure element
+ hasContentItems == false
+
+ The LI structure element contains real content as its direct child instead of enclosing it into
+ Lbl or LBody structure elements
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml
new file mode 100644
index 00000000..f7d453d5
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 logical structure - 8.2.5.26 Table - Regular Table
+ Tables shall be regular. A table cell shall not have intersection with other cells
+
+
+
+
+
+ Tables shall be regular. A table cell shall not have intersection with other cells
+ hasIntersection != true
+
+ Table cell has intersection with other cells
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml
new file mode 100644
index 00000000..87a96ecd
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 logical structure - 8.2.5.26 Table - Regular Table
+ Tables shall be regular. Row groupings formed by THead, TBody and TFoot structure elements shall be
+ regular. Table columns shall have the same number of rows (taking into account row spans) in table and each
+ row groupings formed by THead, TBody and TFoot structure elements
+
+
+
+
+
+ Tables shall be regular. Row groupings formed by THead, TBody and TFoot structure elements
+ shall be regular. Table columns shall have the same number of rows (taking into account row spans) in
+ table and each row groupings formed by THead, TBody and TFoot structure elements
+ numberOfColumnWithWrongRowSpan == null
+
+ Columns 1 and %1 span different number of rows in table, or within one of row groupings formed by THead,
+ TBody and TFoot structure elements
+
+ numberOfColumnWithWrongRowSpan + 1
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t03.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t03.xml
new file mode 100644
index 00000000..90c52ad2
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 logical structure - 8.2.5.26 Table - Regular Table
+ Tables shall be regular. Table rows shall have the same number of columns (taking into account
+ column spans)
+
+
+
+
+
+ Tables shall be regular. Table rows shall have the same number of columns (taking into account
+ column spans)
+ numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null
+
+ Table rows 1 and %1 span different number of columns
+
+ numberOfRowWithWrongColumnSpan + 1
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t04.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t04.xml
new file mode 100644
index 00000000..2ce079d9
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t04.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 logical structure - 8.2.5.26 Table - Regular Table
+ Tables shall be regular. Table rows shall have the same number of columns (taking into account
+ column spans)
+
+
+
+
+
+ Tables shall be regular. Table rows shall have the same number of columns (taking into account
+ column spans)
+ numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null
+
+ Table rows 1 and %1 span different number of columns (%2 and %3 respectively)
+
+ numberOfRowWithWrongColumnSpan + 1
+ columnSpan
+ wrongColumnSpan
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t05.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t05.xml
new file mode 100644
index 00000000..bd909b60
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t05.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 logical structure - 8.2.5.26 Table - Headers, IDs and Scope
+ When a table contains header cells, that table shall provide sufficient semantic information to
+ allow accurate determination of which of its table header cells (structure element TH) pertain to other
+ cells as specified in ISO 32000-2:2020, 14.8.5.7
+
+
+
+
+
+ When a table contains header cells, that table shall provide sufficient semantic information to
+ allow accurate determination of which of its table header cells (structure element TH) pertain to other
+ cells as specified in ISO 32000-2:2020, 14.8.5.7
+ hasConnectedHeader != false || unknownHeaders != ''
+
+ TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t06.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t06.xml
new file mode 100644
index 00000000..63f1db36
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t06.xml
@@ -0,0 +1,30 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 logical structure - 8.2.5.26 Table - Headers, IDs and Scope
+ When a table contains header cells, that table shall provide sufficient semantic information to
+ allow accurate determination of which of its table header cells (structure element TH) pertain to other
+ cells as specified in ISO 32000-2:2020, 14.8.5.7
+
+
+
+
+
+ When a table contains header cells, that table shall provide sufficient semantic information to
+ allow accurate determination of which of its table header cells (structure element TH) pertain to other
+ cells as specified in ISO 32000-2:2020, 14.8.5.7
+ hasConnectedHeader != false || unknownHeaders == ''
+
+ TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically
+
+ unknownHeaders
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.27 Caption/verapdf-profile-8-2-5-27-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.27 Caption/verapdf-profile-8-2-5-27-t01.xml
new file mode 100644
index 00000000..ee890e1b
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.27 Caption/verapdf-profile-8-2-5-27-t01.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.27 Caption - Caption index
+ When present, the Caption element shall be the first or the last child of the structure element
+
+
+
+
+
+ When present, the Caption element shall be the first or the last child of the structure element
+ kidsStandardTypes.indexOf('&Caption&') < 0
+
+ Structure element %1 contains Caption as its %2 child instead of first or last one
+
+ objectKey
+ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.28 Figure/8.2.5.28.2 Figure properties/verapdf-profile-8-2-5-28-2-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.28 Figure/8.2.5.28.2 Figure properties/verapdf-profile-8-2-5-28-2-t01.xml
new file mode 100644
index 00000000..1347fb7c
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.28 Figure/8.2.5.28.2 Figure properties/verapdf-profile-8-2-5-28-2-t01.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.28 Figure - Figure alternative and replacement text
+ A Figure structure element shall have at least one of the following properties:
+ a) an alternate description (Alt property), as specified in ISO 32000-2:2020, 14.9.3;
+ b) a replacement text (ActualText property) that represents the content enclosed by the Figure structure element
+
+
+
+
+
+ A Figure structure element shall have at least one of the following properties:
+ a) an alternate description (Alt property), as specified in ISO 32000-2:2020, 14.9.3;
+ b) a replacement text (ActualText property) that represents the content enclosed by the Figure structure
+ element
+ Alt != null || ActualText != null
+
+ Figure structure element neither has an alternate description nor a replacement text
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t01.xml
new file mode 100644
index 00000000..33a5ae8c
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.29 Formula - Math structure type
+ The math structure type shall occur only as a child of a Formula structure element
+
+
+
+
+
+ The math structure type shall occur only as a child of a Formula structure element
+ parentStandardType == 'Formula' || parentStandardType == 'MathML'
+
+ The math structure type is nested within %1 tag instead of Formula
+
+ parentStandardType
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml
new file mode 100644
index 00000000..6d29a58d
--- /dev/null
+++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.8 Table of Contents (TOC/TOCI) - Reference in TOCI
+ Each TOCI in the table of contents shall identify the target of the reference using the Ref entry,
+ either directly on the TOCI structure element itself or on one of its child structure elements
+
+
+
+
+
+ Each TOCI in the table of contents shall identify the target of the reference using the Ref entry,
+ either directly on the TOCI structure element itself or on one of its child structure elements
+ containsRef == true
+
+ TOCI in the TOC does not contain the Ref entry, neither directly on the TOCI structure element
+ itself nor on its descendant structure elements
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml
new file mode 100644
index 00000000..808b654e
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-2:2024 - 8.4 Text representation for content - Unicode PUA
+ In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present
+
+
+
+
+
+ In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present
+ isRealContent == false || unicodePUA == false || actualTextPresent == true || altPresent == true
+
+ Real content maps to Unicode PUA values, but ActualText and Alt entry are not present
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml
new file mode 100644
index 00000000..055a6fd3
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-2:2024 - 8.4 Text representation for content - Unicode PUA in ActualText
+ The ActualText entry shall not contain any PUA values
+
+
+
+
+
+ The ActualText entry shall not contain any PUA values
+ containsPUA == false
+
+ The ActualText entry contains Unicode PUA (Private Use Area) code points
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml
new file mode 100644
index 00000000..40b8e4a1
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-2:2024 - 8.4 Text representation for content - Unicode PUA in Alt
+ The Alt entry shall not contain any PUA values
+
+
+
+
+
+ The Alt entry shall not contain any PUA values
+ containsPUA == false
+
+ The Alt entry contains Unicode PUA (Private Use Area) code points
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t01.xml
new file mode 100644
index 00000000..89e87edd
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-2:2024 - 8.4 Text representation for content - Lang in catalog
+ The default natural language for content and text strings shall be specified using the Lang entry,
+ with a non-empty value, in the catalog dictionary
+
+
+
+
+
+ The default natural language for content and text strings shall be specified using the Lang
+ entry, with a non-empty value, in the catalog dictionary
+ Lang_size > 0
+
+ Catalog dictionary does not contain Lang entry
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t02.xml
new file mode 100644
index 00000000..b039f6cf
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t02.xml
@@ -0,0 +1,32 @@
+
+
+
+ ISO 14289-2:2024 - 8.4 Text representation for content - Natural language specification
+ If the Lang entry is present in the document's Catalog dictionary or in a structure element
+ dictionary or property list, its value shall be a language identifier as described in ISO 32000-2:2020,
+ 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification
+ of Languages
+
+
+
+
+
+ If the Lang entry is present in the document's Catalog dictionary or in a structure element
+ dictionary or property list, its value shall be a language identifier as described in ISO 32000-2:2020,
+ 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification
+ of Languages
+ /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue)
+
+ Value %1 of the Lang entry is not a Language-Tag
+
+ unicodeValue
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.1 General/verapdf-profile-8-4-5-3-1-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.1 General/verapdf-profile-8-4-5-3-1-t01.xml
new file mode 100644
index 00000000..a797e92d
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.1 General/verapdf-profile-8-4-5-3-1-t01.xml
@@ -0,0 +1,44 @@
+
+
+
+ ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.3 Composite fonts - CIDSystemInfo
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its
+ CIDFont dictionary and its Encoding dictionary shall have the following relationship:
+ - If the Encoding key in the Type 0 font dictionary has a value of Identity-H or Identity-V, then any values
+ for the Registry, Ordering, and Supplement keys may be used in the CIDSystemInfo dictionary of the CIDFont.
+ - Otherwise the corresponding values of the Registry and Ordering keys in both CIDSystemInfo dictionaries
+ shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall
+ be greater than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap
+
+
+
+
+
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its
+ CIDFont dictionary and its Encoding dictionary shall have the following relationship:
+ - If the Encoding key in the Type 0 font dictionary has a value of Identity-H or Identity-V, then any values
+ for the Registry, Ordering, and Supplement keys may be used in the CIDSystemInfo dictionary of the CIDFont.
+ - Otherwise the corresponding values of the Registry and Ordering keys in both CIDSystemInfo dictionaries
+ shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall
+ be less than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null &&
+ CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry &&
+ CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement)
+
+ CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible
+ (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3,
+ CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+ CIDFontSupplement
+ CMapSupplement
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.2 CIDFonts/verapdf-profile-8-4-5-3-2-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.2 CIDFonts/verapdf-profile-8-4-5-3-2-t01.xml
new file mode 100644
index 00000000..4cffda0d
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.2 CIDFonts/verapdf-profile-8-4-5-3-2-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.3 Composite fonts - CIDToGIDMap
+ All embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a CIDToGIDMap entry that shall
+ be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-2:2020, Table 115
+
+
+
+
+
+ All embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a CIDToGIDMap entry that
+ shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-2:2020, Table 115
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t01.xml
new file mode 100644
index 00000000..81a04111
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t01.xml
@@ -0,0 +1,42 @@
+
+
+
+ ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.4 Composite fonts - CMaps
+ All CMaps used within a file that conforms to PDF/UA-2, except those listed in
+ ISO 32000-2:2020, Table 116, shall be embedded in that file, as described in ISO 32000-2:2020, 9.7.5
+
+
+
+
+
+ All CMaps used within a file that conforms to PDF/UA-2, except those listed in
+ ISO 32000-2:2020, Table 116, shall be embedded in that file, as described in ISO 32000-2:2020, 9.7.5
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" ||
+ CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" ||
+ CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" ||
+ CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" ||
+ CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" ||
+ CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" ||
+ CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" ||
+ CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" ||
+ CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" ||
+ CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" ||
+ CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" ||
+ CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" ||
+ CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" ||
+ CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" ||
+ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" ||
+ embeddedFile_size == 1
+
+ A non-standard CMap %1 is not embedded
+
+ CMapName
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t02.xml
new file mode 100644
index 00000000..ed864a05
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t02.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.4 Composite fonts - WMode
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary
+ shall be identical to the WMode value in the embedded CMap stream
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary
+ shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t03.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t03.xml
new file mode 100644
index 00000000..73f45b47
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t03.xml
@@ -0,0 +1,40 @@
+
+
+
+ ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.4 Composite fonts - CMaps
+ A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116
+
+
+
+
+
+ A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" ||
+ CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" ||
+ CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" ||
+ CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" ||
+ CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" ||
+ CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" ||
+ CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" ||
+ CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" ||
+ CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" ||
+ CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" ||
+ CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" ||
+ CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" ||
+ CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" ||
+ CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" ||
+ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" ||
+ CMapName == "UniKS-UTF16-V"
+
+ A CMap references another non-standard CMap %1
+
+ CMapName
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t01.xml
new file mode 100644
index 00000000..6767c0e7
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.5 Embedding - General
+ The font programs for all fonts used for rendering within a conforming file shall be embedded
+ within that file, as defined in ISO 32000-2:2020, 9.9
+
+
+
+
+
+ The font programs for all fonts used for rendering within a conforming file shall be embedded
+ within that file, as defined in ISO 32000-2:2020, 9.9
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t02.xml
new file mode 100644
index 00000000..b2cc998f
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t02.xml
@@ -0,0 +1,32 @@
+
+
+
+ ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.5 Embedding - Glyphs
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file.
+ A font referenced solely in text rendering mode 3 is not rendered and is thus exempt from the requirements
+ that impact the visual representation of the glyphs of a font. In all cases for TrueType fonts that are to
+ be rendered, character codes shall be able to be mapped to glyphs in accordance with ISO 32000-2:2020, 9.6.5,
+ without the use of a non-standard mapping chosen by the conforming processor
+
+
+
+
+
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file.
+ A font referenced solely in text rendering mode 3 is not rendered and is thus exempt from the requirements
+ that impact the visual representation of the glyphs of a font. In all cases for TrueType fonts that are to
+ be rendered, character codes shall be able to be mapped to glyphs in accordance with ISO 32000-2:2020, 9.6.5,
+ without the use of a non-standard mapping chosen by the conforming processor
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.6 Font metrics/verapdf-profile-8-4-5-6-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.6 Font metrics/verapdf-profile-8-4-5-6-t01.xml
new file mode 100644
index 00000000..b1784fc4
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.6 Font metrics/verapdf-profile-8-4-5-6-t01.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.6 Font metrics - Glyph width
+ For every font embedded in a conforming file and referenced for rendering, the glyph width
+ information in the font dictionary and in the embedded font program shall be consistent for every glyph
+
+
+
+
+
+ For every font embedded in a conforming file and referenced for rendering, the glyph width
+ information in the font dictionary and in the embedded font program shall be consistent for every glyph
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null ||
+ Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font
+ dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml
new file mode 100644
index 00000000..2b742601
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.7 Character encodings - cmaps for non-symbolic TrueType fonts
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall
+ contain at least Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1), or Macintosh Roman
+ (1,0 – Platform ID=1, Encoding ID=0) 'cmap' subtable
+
+
+
+
+
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall
+ contain at least Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1), or Macintosh Roman
+ (1,0 – Platform ID=1, Encoding ID=0) 'cmap' subtable
+ isSymbolic == true || cmap31Present == true || cmap10Present == true
+
+ The embedded font program for a non-symbolic TrueType font does not contain Microsoft
+ Symbol (3,1 – Platform ID=3, Encoding ID=1) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t02.xml
new file mode 100644
index 00000000..b29a61f9
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t02.xml
@@ -0,0 +1,37 @@
+
+
+
+ ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.7 Character encodings - Non-symbolic TrueType fonts
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the
+ value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the
+ dictionary which is the value of the Encoding key in the Font dictionary. In addition, no non-symbolic
+ TrueType font shall define a Differences array unless all of the glyph names in the Differences array
+ are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft
+ Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' table
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the
+ value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the
+ dictionary which is the value of the Encoding key in the Font dictionary. In addition, no non-symbolic
+ TrueType font shall define a Differences array unless all of the glyph names in the Differences array
+ are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft
+ Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' table
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") &&
+ (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List
+ (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t03.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t03.xml
new file mode 100644
index 00000000..1a6365c3
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t03.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.7 Character encodings - Symbolic TrueType fonts
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+
+
+
+
+
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t04.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t04.xml
new file mode 100644
index 00000000..a8d44259
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t04.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.7 Character encodings - cmaps in the symbolic TrueType font program
+ The 'cmap' subtable in the embedded font program shall either contain the Microsoft Symbol
+ (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=1) encoding
+
+
+
+
+
+ The 'cmap' subtable in the embedded font program shall either contain the Microsoft Symbol
+ (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=1) encoding
+ isSymbolic == false || cmap30Present == true || cmap10Present == true
+
+ The embedded font program for a symbolic TrueType font does not contain Microsoft Symbol
+ (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t01.xml
new file mode 100644
index 00000000..469471a5
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t01.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.8 Unicode character maps - Unicode mapping
+ The Font dictionary of all fonts shall define the map of all used character codes to Unicode values,
+ either via a ToUnicode entry, or other mechanisms as defined in ISO 14289-2, 8.4.5.8
+
+
+
+
+
+ The Font dictionary of all fonts shall define the map of all used character codes to Unicode
+ values, either via a ToUnicode entry, or other mechanisms as defined in ISO 14289-2, 8.4.5.8
+ toUnicode != null
+
+ The glyph can not be mapped to Unicode
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml
new file mode 100644
index 00000000..92b5a93a
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.8 Unicode character maps - Valid Unicode values
+ If a ToUnicode CMap is present, the Unicode values it specifies shall all be greater than zero (0),
+ but not equal to either U+FEFF or U+FFFE
+
+
+
+
+
+ If a ToUnicode CMap is present, the Unicode values it specifies shall all be greater than
+ zero (0), but not equal to either U+FEFF or U+FFFE
+ toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 &&
+ toUnicode.indexOf("\uFEFF") == -1)
+
+ The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml
new file mode 100644
index 00000000..e61f1ec1
--- /dev/null
+++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.9 Use of .notdef glyph - Use of .notdef glyph
+ A file in conformance with PDF/UA-2 shall not contain a reference to the .notdef glyph from any of
+ the text showing operators, regardless of text rendering mode, in any content stream
+
+
+
+
+
+ A file in conformance with PDF/UA-2 shall not contain a reference to the .notdef glyph from any
+ of the text showing operators, regardless of text rendering mode, in any content stream
+ name != ".notdef"
+
+ The document contains a reference to the .notdef glyph
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml b/PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml
new file mode 100644
index 00000000..9acbc594
--- /dev/null
+++ b/PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-2:2024 - 8.6 Text string objects - Unicode PUA
+ Text strings intended to be human readable shall not use the Unicode PUA
+
+
+
+
+
+ Text strings intended to be human readable shall not use the Unicode PUA
+ containsPUA == false
+
+ Text string intended to be human readable uses Unicode PUA
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t01.xml b/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t01.xml
new file mode 100644
index 00000000..530a2bb7
--- /dev/null
+++ b/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t01.xml
@@ -0,0 +1,39 @@
+
+
+
+ ISO 14289-2:2024 - 8.7 Optional content - Name key present
+ All optional content configuration dictionaries in the document, including the default optional
+ content configuration dictionary, shall contain a Name entry (see ISO 32000-2:2020, Table 96) whose value is
+ a non-empty text string when:
+ a) a document contains a Configs entry in the OCProperties entry of the catalog dictionary
+ (see ISO 32000-2:2020, Table 29), and
+ b) the Configs entry contains at least one optional content configuration dictionary
+
+
+
+
+
+ All optional content configuration dictionaries in the document, including the default optional
+ content configuration dictionary, shall contain a Name entry (see ISO 32000-2:2020, Table 96) whose value
+ is a non-empty text string when:
+ a) a document contains a Configs entry in the OCProperties entry of the catalog dictionary
+ (see ISO 32000-2:2020, Table 29), and
+ b) the Configs entry contains at least one optional content configuration dictionary
+ gContainsConfigs == false || (Name != null && Name.length() > 0)
+
+ Missing or empty Name entry of the optional content configuration dictionary
+
+
+
+
+
+
+
+
+
+
+ false
+ containsConfigs
+
+
+
diff --git a/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t02.xml b/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t02.xml
new file mode 100644
index 00000000..f35ee288
--- /dev/null
+++ b/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-2:2024 - 8.7 Optional content - AS key
+ The AS key shall not appear in any optional content configuration dictionary
+
+
+
+
+
+ The AS key shall not appear in any optional content configuration dictionary
+ AS == null
+
+ AS key is present in the optional content configuration dictionary
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml b/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml
new file mode 100644
index 00000000..4532bdd4
--- /dev/null
+++ b/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 14289-2:2024 - 8.8 Intra-document destinations - Struct destination
+ All destinations whose target lies within the current document shall be structure destinations
+
+
+
+
+
+ All destinations whose target lies within the current document shall be structure destinations
+ isStructDestination == true
+
+ Destination in Outline item, OpenAction or Link annotation is not a structure destination
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t02.xml b/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t02.xml
new file mode 100644
index 00000000..81391bd6
--- /dev/null
+++ b/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t02.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 14289-2:2024 - 8.8 Intra-document destinations - Struct destination
+ All destinations whose target lies within the current document shall be structure destinations
+
+
+
+
+
+ All destinations whose target lies within the current document shall be structure destinations
+ containsStructDestination == true
+
+ Destination in GoTo action is not a structure destination
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t01.xml
new file mode 100644
index 00000000..ce875689
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t01.xml
@@ -0,0 +1,29 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.2 Annotations as artifacts - Invisible flag
+ Annotations shall be artifacts, if the Invisible flag is set in accordance with ISO 32000-2:2020,
+ Table 167
+
+
+
+
+
+ Annotations shall be artifacts, if the Invisible flag is set in accordance with ISO 32000-2:2020,
+ Table 167
+ structParentType == null || isArtifact == true || (F & 1) == 0
+
+ An invisible annotation is included in logical structure with tag %1 (standard type = %2, Invisible = %3)
+
+ structParentType
+ structParentStandardType
+ F != null ? (F & 1) : null
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml
new file mode 100644
index 00000000..314d6632
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml
@@ -0,0 +1,31 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.2 Annotations as artifacts - NoView and ToggleNoView flags
+ Annotations shall be artifacts if the NoView flag is set and the ToggleNoView flag is not set
+ in accordance with ISO 32000-2:2020, Table 167
+
+
+
+
+
+ Annotations shall be artifacts if the NoView flag is set and the ToggleNoView flag is not set
+ in accordance with ISO 32000-2:2020, Table 167
+ structParentType == null || isArtifact == true || ((F & 32) == 0 || (F & 256) == 1)
+
+ A no-view annotation is included in logical structure with tag %1 (standard type = %2,
+ NoView = %3, ToggleNoView = %4)
+
+ structParentType
+ structParentStandardType
+ F != null ? (F & 32) >> 5 : null
+ F != null ? (F & 256) >> 8 : null
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t01.xml
new file mode 100644
index 00000000..e1903c4a
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t01.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.3 Markup annotations - Annot structure element
+ Markup annotations shall be enclosed within Annot structure elements
+
+
+
+
+
+ Markup annotations shall be enclosed within Annot structure elements
+ structParentStandardType == 'Annot'
+
+ A Markup annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Annot
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t02.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t02.xml
new file mode 100644
index 00000000..458d63a4
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t02.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.3 Markup annotations - RC and Contents entries
+ When both RC and Contents entries are present for markup annotation, they shall be textually equivalent
+
+
+
+
+
+ When both RC and Contents entries are present for markup annotation, they shall be textually equivalent
+ containsRC == false || Contents == null || RC == Contents
+
+ A Markup annotation contains Contents and RC entries with non-equivalent textual values (RC = %1, Contents = %2)
+
+ RC
+ Contents
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml
new file mode 100644
index 00000000..bc911738
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - File attachment annotation
+ When a file attachment annotation references a file specification dictionary, the file
+ specification dictionary shall include an AFRelationship entry
+
+
+
+
+
+ When a file attachment annotation references a file specification dictionary, the file
+ specification dictionary shall include an AFRelationship entry
+ containsFS == false || AFRelationship != null
+
+ The file specification dictionary referenced by a file attachment annotation does not include
+ AFRelationship entry
+
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t01.xml
new file mode 100644
index 00000000..141f4ead
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - Sound annotation
+ Sound annotation cannot be used when conforming to PDF/UA-2
+
+
+
+
+
+ Sound annotation cannot be used when conforming to PDF/UA-2
+ false
+
+ An annotation of subtype Sound exists
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t02.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t02.xml
new file mode 100644
index 00000000..a877c497
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - Movie annotation
+ Movie annotation cannot be used when conforming to PDF/UA-2
+
+
+
+
+
+ Movie annotation cannot be used when conforming to PDF/UA-2
+ false
+
+ An annotation of subtype Movie exists
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.12 Screen/verapdf-profile-8-9-2-4-12-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.12 Screen/verapdf-profile-8-9-2-4-12-t01.xml
new file mode 100644
index 00000000..5cbd5210
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.12 Screen/verapdf-profile-8-9-2-4-12-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - Screen annotation
+ Screen annotations shall include a Contents entry
+
+
+
+
+
+ Screen annotations shall include a Contents entry
+ Contents != null
+
+ Screen annotation does not contain Contents entry
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml
new file mode 100644
index 00000000..8af2a006
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - Widget annotation
+ A widget annotation of zero height and width shall be an artifact
+
+
+
+
+
+ A widget annotation of zero height and width shall be an artifact
+ width != 0 || height != 0 || structParentType == null || isArtifact == true
+
+ A Widget annotation of zero height and width is not marked as an Artifact (structure tag = %1, standard type = %2)
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml
new file mode 100644
index 00000000..518e17ab
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - PrinterMark annotation
+ A printer's mark annotation shall be an artifact
+
+
+
+
+
+ A printer's mark annotation shall be an artifact
+ structParentType == null || isArtifact == true
+
+ A PrinterMark annotation is included in logical structure with tag %1 (standard type = %2)
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.15 Trap network/verapdf-profile-8-9-2-4-15-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.15 Trap network/verapdf-profile-8-9-2-4-15-t01.xml
new file mode 100644
index 00000000..81b552b1
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.15 Trap network/verapdf-profile-8-9-2-4-15-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - Trap network annotation
+ Trap network annotations shall not be used in files conforming to PDF/UA-2
+
+
+
+
+
+ Trap network annotations shall not be used in files conforming to PDF/UA-2
+ false
+
+ An annotation of subtype TrapNet exists
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.16 Watermark/verapdf-profile-8-9-2-4-16-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.16 Watermark/verapdf-profile-8-9-2-4-16-t01.xml
new file mode 100644
index 00000000..3332f14d
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.16 Watermark/verapdf-profile-8-9-2-4-16-t01.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4.16 Watermark - Annot structure element
+ When used as real content, Watermark annotations shall be enclosed within Annot structure elements
+
+
+
+
+
+ When used as real content, Watermark annotations shall be enclosed within Annot structure elements
+ structParentType == null || isArtifact == true || structParentStandardType == 'Annot'
+
+ A Watermark annotation is nested within %1 tag (standard type = %2) instead of Annot
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t01.xml
new file mode 100644
index 00000000..3cb0ac8b
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - 3D annotation
+ 3D annotation shall include alternate description in respective Contents entry
+
+
+
+
+
+ 3D annotation shall include alternate description in respective Contents entry
+ Contents != null
+
+ 3D annotation does not contain Contents entry
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t02.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t02.xml
new file mode 100644
index 00000000..da9d5f76
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - RichMedia annotation
+ RichMedia annotation shall include alternate description in respective Contents entry
+
+
+
+
+
+ RichMedia annotation shall include alternate description in respective Contents entry
+ Contents != null
+
+ RichMedia annotation does not contain Contents entry
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml
new file mode 100644
index 00000000..08ca5394
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - Rubber stamp annotation
+ If the Name entry is insufficient to describe the intent of the stamp annotation, a Contents entry
+ describing the author’s intent shall be provided
+
+
+
+
+
+ If the Name entry is insufficient to describe the intent of the stamp annotation, a Contents
+ entry describing the author’s intent shall be provided
+ Name != null || Contents != null
+
+ Rubber stamp annotation contains neither Name nor Contents entry
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.8 Ink/verapdf-profile-8-9-2-4-8-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.8 Ink/verapdf-profile-8-9-2-4-8-t01.xml
new file mode 100644
index 00000000..127257e6
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.8 Ink/verapdf-profile-8-9-2-4-8-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - Ink annotation
+ A Contents entry describing the author’s intent shall be provided for Ink annotation
+
+
+
+
+
+ A Contents entry describing the author’s intent shall be provided for Ink annotation
+ Contents != null
+
+ Ink annotation does not contain Contents entry
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml
new file mode 100644
index 00000000..fc40ea98
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - Popup annotation
+ Popup annotations shall not be present in the structure tree
+
+
+
+
+
+ Popup annotations shall not be present in the structure tree
+ structParentType == null
+
+ A Popup annotation is included in logical structure with tag %1 (standard type = %2)
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.3 Order/8.9.3.3 Tab order/verapdf-profile-8-9-3-3-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.3 Order/8.9.3.3 Tab order/verapdf-profile-8-9-3-3-t01.xml
new file mode 100644
index 00000000..4aa06b13
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.3 Order/8.9.3.3 Tab order/verapdf-profile-8-9-3-3-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.3.3 Tab order - Tabs in page with annotations
+ Every page that includes an annotation shall contain a Tabs entry in its page dictionary in
+ accordance with ISO 32000-2:2020, Table 31, and its value shall be A, W or S
+
+
+
+
+
+ Every page that includes an annotation shall contain a Tabs entry in its page dictionary in
+ accordance with ISO 32000-2:2020, Table 31, and its value shall be A, W or S
+ annots_size == 0 || Tabs == 'A' || Tabs == 'W' || Tabs == 'S'
+
+ A page with annotation(s) contains Tabs key with value %1 instead of A, W or S
+
+ Tabs
+
+
+
+
+
+
+
diff --git a/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml
new file mode 100644
index 00000000..ec703ac5
--- /dev/null
+++ b/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-2:2024 - 8.9 Annotations - 8.9.4.2 Alt properties - Alt and Contents
+ Where an annotation has a Contents entry and the directly enclosing structure element has an Alt
+ entry, the values of Alt and Contents shall be identical
+
+
+
+
+
+ Where an annotation has a Contents entry and the directly enclosing structure element has an Alt
+ entry, the values of Alt and Contents shall be identical
+ Contents == null || Alt == null || Contents == Alt
+
+ Both Contents and Alt entries are present for the annotation, but they are not identical (Contents = %1, Alt = %2)
+
+ Contents
+ Alt
+
+
+
+
+
+
+
diff --git a/PDF_UA/ISO-32000-1-Tagged.xml b/PDF_UA/ISO-32000-1-Tagged.xml
new file mode 100644
index 00000000..66409e42
--- /dev/null
+++ b/PDF_UA/ISO-32000-1-Tagged.xml
@@ -0,0 +1,15395 @@
+
+
+
+ Tagged pdf profile for PDF 1.7 specification
+ Profile for validation of tagged pdf structure tree relations
+
+
+
+
+
+ Every structure element shall be mapped to standard type
+ false
+
+ Structure element does not map to standard structure type
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should contain zero or one Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length <= 1
+
+ StructTreeRoot contains more than one Document kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ StructTreeRoot elem contains Part kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ StructTreeRoot elem contains Art kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ StructTreeRoot elem contains Div kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ StructTreeRoot elem contains Sect kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ StructTreeRoot elem contains TOC kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ StructTreeRoot elem contains TOCI kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ StructTreeRoot elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ StructTreeRoot elem contains P kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ StructTreeRoot elem contains Note kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ StructTreeRoot elem contains Code kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ StructTreeRoot elem contains Hn kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ StructTreeRoot elem contains H kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ StructTreeRoot elem contains Lbl kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ StructTreeRoot elem contains Span kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ StructTreeRoot elem contains Quote kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ StructTreeRoot elem contains Link kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ StructTreeRoot elem contains Reference kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ StructTreeRoot elem contains Annot kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ StructTreeRoot elem contains Form kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ StructTreeRoot elem contains Ruby kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ StructTreeRoot elem contains RB kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ StructTreeRoot elem contains RT kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ StructTreeRoot elem contains RP kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ StructTreeRoot elem contains Warichu kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ StructTreeRoot elem contains WT kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ StructTreeRoot elem contains WP kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ StructTreeRoot elem contains Index kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ StructTreeRoot elem contains L kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ StructTreeRoot elem contains LI kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ StructTreeRoot elem contains LBody kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ StructTreeRoot elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ StructTreeRoot elem contains Table kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ StructTreeRoot elem contains TR kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ StructTreeRoot elem contains TH kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ StructTreeRoot elem contains TD kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ StructTreeRoot elem contains THead kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ StructTreeRoot elem contains TBody kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ StructTreeRoot elem contains TFoot kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ StructTreeRoot elem contains Caption kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ StructTreeRoot elem contains Figure kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ StructTreeRoot elem contains Formula kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain content item kid
+ hasContentItems == false
+
+ StructTreeRoot elem contains content item kid
+
+
+
+
+
+
+
+
+ Document elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Document elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Document elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ Document contains more than one H kid
+
+
+
+
+
+
+
+
+ Document elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ Document elem contains Lbl kid
+
+
+
+
+
+
+
+
+ Document elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Document elem contains Span kid
+
+
+
+
+
+
+
+
+ Document elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Document elem contains Quote kid
+
+
+
+
+
+
+
+
+ Document elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ Document elem contains Reference kid
+
+
+
+
+
+
+
+
+ Document elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Document elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Document elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Document elem contains RB kid
+
+
+
+
+
+
+
+
+ Document elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Document elem contains RT kid
+
+
+
+
+
+
+
+
+ Document elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Document elem contains RP kid
+
+
+
+
+
+
+
+
+ Document elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Document elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Document elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Document elem contains WT kid
+
+
+
+
+
+
+
+
+ Document elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Document elem contains WP kid
+
+
+
+
+
+
+
+
+ Document elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Document elem contains LI kid
+
+
+
+
+
+
+
+
+ Document elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Document elem contains LBody kid
+
+
+
+
+
+
+
+
+ Document elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ Document elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ Document elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Document elem contains TR kid
+
+
+
+
+
+
+
+
+ Document elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Document elem contains TH kid
+
+
+
+
+
+
+
+
+ Document elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Document elem contains TD kid
+
+
+
+
+
+
+
+
+ Document elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Document elem contains THead kid
+
+
+
+
+
+
+
+
+ Document elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Document elem contains TBody kid
+
+
+
+
+
+
+
+
+ Document elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Document elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Document elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Document elem contains Caption kid
+
+
+
+
+
+
+
+
+ Document elem should not contain content item kid
+ hasContentItems == false
+
+ Document elem contains content item kid
+
+
+
+
+
+
+
+
+ Part elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Part elem contains Span kid
+
+
+
+
+
+
+
+
+ Part elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Part elem contains Quote kid
+
+
+
+
+
+
+
+
+ Part elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Part elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Part elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Part elem contains RB kid
+
+
+
+
+
+
+
+
+ Part elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Part elem contains RT kid
+
+
+
+
+
+
+
+
+ Part elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Part elem contains RP kid
+
+
+
+
+
+
+
+
+ Part elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Part elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Part elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Part elem contains WT kid
+
+
+
+
+
+
+
+
+ Part elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Part elem contains WP kid
+
+
+
+
+
+
+
+
+ Part elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Part elem contains LI kid
+
+
+
+
+
+
+
+
+ Part elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Part elem contains LBody kid
+
+
+
+
+
+
+
+
+ Part elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Part elem contains TR kid
+
+
+
+
+
+
+
+
+ Part elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Part elem contains TH kid
+
+
+
+
+
+
+
+
+ Part elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Part elem contains TD kid
+
+
+
+
+
+
+
+
+ Part elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Part elem contains THead kid
+
+
+
+
+
+
+
+
+ Part elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Part elem contains TBody kid
+
+
+
+
+
+
+
+
+ Part elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Part elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Part elem should not contain content item kid
+ hasContentItems == false
+
+ Part elem contains content item kid
+
+
+
+
+
+
+
+
+ Div elem should not contain content item kid
+ hasContentItems == false
+
+ Div elem contains content item kid
+
+
+
+
+
+
+
+
+ Art elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Art elem contains Document kid
+
+
+
+
+
+
+
+
+ Art elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Art elem contains Art kid
+
+
+
+
+
+
+
+
+ Art elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Art elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Art elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ Art contains more than one H kid
+
+
+
+
+
+
+
+
+ Art elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Art elem contains Span kid
+
+
+
+
+
+
+
+
+ Art elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Art elem contains Quote kid
+
+
+
+
+
+
+
+
+ Art elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ Art elem contains Reference kid
+
+
+
+
+
+
+
+
+ Art elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Art elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Art elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Art elem contains RB kid
+
+
+
+
+
+
+
+
+ Art elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Art elem contains RT kid
+
+
+
+
+
+
+
+
+ Art elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Art elem contains RP kid
+
+
+
+
+
+
+
+
+ Art elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Art elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Art elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Art elem contains WT kid
+
+
+
+
+
+
+
+
+ Art elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Art elem contains WP kid
+
+
+
+
+
+
+
+
+ Art elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Art elem contains LI kid
+
+
+
+
+
+
+
+
+ Art elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Art elem contains LBody kid
+
+
+
+
+
+
+
+
+ Art elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ Art elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ Art elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Art elem contains TR kid
+
+
+
+
+
+
+
+
+ Art elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Art elem contains TH kid
+
+
+
+
+
+
+
+
+ Art elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Art elem contains TD kid
+
+
+
+
+
+
+
+
+ Art elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Art elem contains THead kid
+
+
+
+
+
+
+
+
+ Art elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Art elem contains TBody kid
+
+
+
+
+
+
+
+
+ Art elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Art elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Art elem should not contain content item kid
+ hasContentItems == false
+
+ Art elem contains content item kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Sect elem contains Document kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Sect elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Sect elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ Sect contains more than one H kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Sect elem contains Span kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Sect elem contains Quote kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ Sect elem contains Reference kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Sect elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Sect elem contains RB kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Sect elem contains RT kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Sect elem contains RP kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Sect elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Sect elem contains WT kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Sect elem contains WP kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Sect elem contains LI kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Sect elem contains LBody kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ Sect elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Sect elem contains TR kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Sect elem contains TH kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Sect elem contains TD kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Sect elem contains THead kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Sect elem contains TBody kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Sect elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain content item kid
+ hasContentItems == false
+
+ Sect elem contains content item kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ TOC elem contains Document kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ TOC elem contains Part kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ TOC elem contains Art kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ TOC elem contains Div kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ TOC elem contains Sect kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ TOC elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ TOC elem contains P kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ TOC elem contains Note kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ TOC elem contains Code kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ TOC elem contains Hn kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ TOC elem contains H kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ TOC elem contains Lbl kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ TOC elem contains Span kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ TOC elem contains Quote kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ TOC elem contains Link kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ TOC elem contains Reference kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ TOC elem contains Annot kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ TOC elem contains Form kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ TOC elem contains Ruby kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ TOC elem contains RB kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ TOC elem contains RT kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ TOC elem contains RP kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ TOC elem contains Warichu kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ TOC elem contains WT kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ TOC elem contains WP kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ TOC elem contains Index kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ TOC elem contains L kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ TOC elem contains LI kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ TOC elem contains LBody kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ TOC elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ TOC elem contains Table kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ TOC elem contains TR kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ TOC elem contains TH kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ TOC elem contains TD kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ TOC elem contains THead kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ TOC elem contains TBody kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ TOC elem contains TFoot kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ TOC elem contains Caption kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ TOC elem contains Figure kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ TOC elem contains Formula kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain content item kid
+ hasContentItems == false
+
+ TOC elem contains content item kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ TOCI elem contains Document kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ TOCI elem contains Part kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ TOCI elem contains Art kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ TOCI elem contains Sect kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ TOCI elem contains TOCI kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ TOCI elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ TOCI elem contains Note kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ TOCI elem contains Code kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ TOCI elem contains Hn kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ TOCI elem contains H kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ TOCI elem contains Span kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ TOCI elem contains Quote kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ TOCI elem contains Link kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ TOCI elem contains Annot kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ TOCI elem contains Form kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ TOCI elem contains Ruby kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ TOCI elem contains RB kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ TOCI elem contains RT kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ TOCI elem contains RP kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ TOCI elem contains Warichu kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ TOCI elem contains WT kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ TOCI elem contains WP kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ TOCI elem contains Index kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ TOCI elem contains L kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ TOCI elem contains LI kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ TOCI elem contains LBody kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ TOCI elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ TOCI elem contains Table kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ TOCI elem contains TR kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ TOCI elem contains TH kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ TOCI elem contains TD kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ TOCI elem contains THead kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ TOCI elem contains TBody kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ TOCI elem contains TFoot kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ TOCI elem contains Caption kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ TOCI elem contains Figure kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ TOCI elem contains Formula kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain content item kid
+ hasContentItems == false
+
+ TOCI elem contains content item kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ BlockQuote elem contains TOCI kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ BlockQuote elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ BlockQuote contains more than one H kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ BlockQuote elem contains Span kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ BlockQuote elem contains Quote kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ BlockQuote elem contains Ruby kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ BlockQuote elem contains RB kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ BlockQuote elem contains RT kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ BlockQuote elem contains RP kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ BlockQuote elem contains Warichu kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ BlockQuote elem contains WT kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ BlockQuote elem contains WP kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ BlockQuote elem contains LI kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ BlockQuote elem contains LBody kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ BlockQuote elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ BlockQuote elem contains TR kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ BlockQuote elem contains TH kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ BlockQuote elem contains TD kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ BlockQuote elem contains THead kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ BlockQuote elem contains TBody kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ BlockQuote elem contains TFoot kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ BlockQuote contains more than one Caption kid
+
+
+
+
+
+
+
+
+ Private elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ Private contains more than one H kid
+
+
+
+
+
+
+
+
+ Private elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ Private contains more than one Caption kid
+
+
+
+
+
+
+
+
+ P elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ P elem contains Document kid
+
+
+
+
+
+
+
+
+ P elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ P elem contains Part kid
+
+
+
+
+
+
+
+
+ P elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ P elem contains Art kid
+
+
+
+
+
+
+
+
+ P elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ P elem contains Div kid
+
+
+
+
+
+
+
+
+ P elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ P elem contains Sect kid
+
+
+
+
+
+
+
+
+ P elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ P elem contains TOC kid
+
+
+
+
+
+
+
+
+ P elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ P elem contains TOCI kid
+
+
+
+
+
+
+
+
+ P elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ P elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ P elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ P elem contains P kid
+
+
+
+
+
+
+
+
+ P elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ P elem contains Hn kid
+
+
+
+
+
+
+
+
+ P elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ P elem contains H kid
+
+
+
+
+
+
+
+
+ P elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ P elem contains RB kid
+
+
+
+
+
+
+
+
+ P elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ P elem contains RT kid
+
+
+
+
+
+
+
+
+ P elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ P elem contains RP kid
+
+
+
+
+
+
+
+
+ P elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ P elem contains WT kid
+
+
+
+
+
+
+
+
+ P elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ P elem contains WP kid
+
+
+
+
+
+
+
+
+ P elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ P elem contains Index kid
+
+
+
+
+
+
+
+
+ P elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ P elem contains LI kid
+
+
+
+
+
+
+
+
+ P elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ P elem contains LBody kid
+
+
+
+
+
+
+
+
+ P elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ P elem contains Table kid
+
+
+
+
+
+
+
+
+ P elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ P elem contains TR kid
+
+
+
+
+
+
+
+
+ P elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ P elem contains TH kid
+
+
+
+
+
+
+
+
+ P elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ P elem contains TD kid
+
+
+
+
+
+
+
+
+ P elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ P elem contains THead kid
+
+
+
+
+
+
+
+
+ P elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ P elem contains TBody kid
+
+
+
+
+
+
+
+
+ P elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ P elem contains TFoot kid
+
+
+
+
+
+
+
+
+ P elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ P elem contains Caption kid
+
+
+
+
+
+
+
+
+ Note elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Note elem contains Document kid
+
+
+
+
+
+
+
+
+ Note elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Note elem contains TOC kid
+
+
+
+
+
+
+
+
+ Note elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Note elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Note elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ Note elem contains Hn kid
+
+
+
+
+
+
+
+
+ Note elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Note elem contains H kid
+
+
+
+
+
+
+
+
+ Note elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Note elem contains RB kid
+
+
+
+
+
+
+
+
+ Note elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Note elem contains RT kid
+
+
+
+
+
+
+
+
+ Note elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Note elem contains RP kid
+
+
+
+
+
+
+
+
+ Note elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Note elem contains WT kid
+
+
+
+
+
+
+
+
+ Note elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Note elem contains WP kid
+
+
+
+
+
+
+
+
+ Note elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Note elem contains LI kid
+
+
+
+
+
+
+
+
+ Note elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Note elem contains LBody kid
+
+
+
+
+
+
+
+
+ Note elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Note elem contains TR kid
+
+
+
+
+
+
+
+
+ Note elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Note elem contains TH kid
+
+
+
+
+
+
+
+
+ Note elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Note elem contains TD kid
+
+
+
+
+
+
+
+
+ Note elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Note elem contains THead kid
+
+
+
+
+
+
+
+
+ Note elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Note elem contains TBody kid
+
+
+
+
+
+
+
+
+ Note elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Note elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Code elem contains Document kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Code elem contains Art kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Code elem contains Sect kid
+
+
+
+
+
+
+
+
+ Code elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Code elem contains TOC kid
+
+
+
+
+
+
+
+
+ Code elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Code elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Code elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Code elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Code elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Code elem contains P kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ Code elem contains Code kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ Code elem contains Hn kid
+
+
+
+
+
+
+
+
+ Code elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Code elem contains H kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ Code elem contains Lbl kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Code elem contains Quote kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ Code elem contains Form kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Code elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Code elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Code elem contains RB kid
+
+
+
+
+
+
+
+
+ Code elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Code elem contains RT kid
+
+
+
+
+
+
+
+
+ Code elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Code elem contains RP kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Code elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Code elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Code elem contains WT kid
+
+
+
+
+
+
+
+
+ Code elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Code elem contains WP kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Code elem contains Index kid
+
+
+
+
+
+
+
+
+ Code elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ Code elem contains L kid
+
+
+
+
+
+
+
+
+ Code elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Code elem contains LI kid
+
+
+
+
+
+
+
+
+ Code elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Code elem contains LBody kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Code elem contains Table kid
+
+
+
+
+
+
+
+
+ Code elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Code elem contains TR kid
+
+
+
+
+
+
+
+
+ Code elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Code elem contains TH kid
+
+
+
+
+
+
+
+
+ Code elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Code elem contains TD kid
+
+
+
+
+
+
+
+
+ Code elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Code elem contains THead kid
+
+
+
+
+
+
+
+
+ Code elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Code elem contains TBody kid
+
+
+
+
+
+
+
+
+ Code elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Code elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Code elem contains Caption kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ Code elem contains Figure kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ Code elem contains Formula kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain Document kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0)
+
+ Hn elem contains Document kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain Part kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0)
+
+ Hn elem contains Part kid
+
+
+
+
+
+
+
+
+ Hn elem should contain zero or one Art kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1)
+
+ Hn contains more than one Art kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain Div kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0)
+
+ Hn elem contains Div kid
+
+
+
+
+
+
+
+
+ Hn elem should contain zero or one Sect kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1)
+
+ Hn contains more than one Sect kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain TOC kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0)
+
+ Hn elem contains TOC kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain TOCI kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0)
+
+ Hn elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain BlockQuote kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0)
+
+ Hn elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain P kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0)
+
+ Hn elem contains P kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain Hn kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0)
+
+ Hn elem contains Hn kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain H kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0)
+
+ Hn elem contains H kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain RB kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0)
+
+ Hn elem contains RB kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain RT kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0)
+
+ Hn elem contains RT kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain RP kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0)
+
+ Hn elem contains RP kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain WT kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0)
+
+ Hn elem contains WT kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain WP kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0)
+
+ Hn elem contains WP kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain Index kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0)
+
+ Hn elem contains Index kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain L kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0)
+
+ Hn elem contains L kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain LI kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0)
+
+ Hn elem contains LI kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain LBody kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0)
+
+ Hn elem contains LBody kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain Table kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0)
+
+ Hn elem contains Table kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain TR kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0)
+
+ Hn elem contains TR kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain TH kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0)
+
+ Hn elem contains TH kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain TD kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0)
+
+ Hn elem contains TD kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain THead kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0)
+
+ Hn elem contains THead kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain TBody kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0)
+
+ Hn elem contains TBody kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain TFoot kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0)
+
+ Hn elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain Caption kid
+ (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0)
+
+ Hn elem contains Caption kid
+
+
+
+
+
+
+
+
+ H elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ H elem contains Document kid
+
+
+
+
+
+
+
+
+ H elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ H elem contains Part kid
+
+
+
+
+
+
+
+
+ H elem should contain zero or one Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1
+
+ H contains more than one Art kid
+
+
+
+
+
+
+
+
+ H elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ H elem contains Div kid
+
+
+
+
+
+
+
+
+ H elem should contain zero or one Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1
+
+ H contains more than one Sect kid
+
+
+
+
+
+
+
+
+ H elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ H elem contains TOC kid
+
+
+
+
+
+
+
+
+ H elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ H elem contains TOCI kid
+
+
+
+
+
+
+
+
+ H elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ H elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ H elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ H elem contains P kid
+
+
+
+
+
+
+
+
+ H elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ H elem contains Hn kid
+
+
+
+
+
+
+
+
+ H elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ H elem contains H kid
+
+
+
+
+
+
+
+
+ H elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ H elem contains RB kid
+
+
+
+
+
+
+
+
+ H elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ H elem contains RT kid
+
+
+
+
+
+
+
+
+ H elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ H elem contains RP kid
+
+
+
+
+
+
+
+
+ H elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ H elem contains WT kid
+
+
+
+
+
+
+
+
+ H elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ H elem contains WP kid
+
+
+
+
+
+
+
+
+ H elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ H elem contains Index kid
+
+
+
+
+
+
+
+
+ H elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ H elem contains L kid
+
+
+
+
+
+
+
+
+ H elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ H elem contains LI kid
+
+
+
+
+
+
+
+
+ H elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ H elem contains LBody kid
+
+
+
+
+
+
+
+
+ H elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ H elem contains Table kid
+
+
+
+
+
+
+
+
+ H elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ H elem contains TR kid
+
+
+
+
+
+
+
+
+ H elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ H elem contains TH kid
+
+
+
+
+
+
+
+
+ H elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ H elem contains TD kid
+
+
+
+
+
+
+
+
+ H elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ H elem contains THead kid
+
+
+
+
+
+
+
+
+ H elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ H elem contains TBody kid
+
+
+
+
+
+
+
+
+ H elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ H elem contains TFoot kid
+
+
+
+
+
+
+
+
+ H elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ H elem contains Caption kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Lbl elem contains Document kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ Lbl elem contains Part kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Lbl elem contains Art kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ Lbl elem contains Div kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Lbl elem contains Sect kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Lbl elem contains TOC kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Lbl elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Lbl elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Lbl elem contains P kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ Lbl elem contains Hn kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Lbl elem contains H kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ Lbl elem contains Lbl kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Lbl elem contains RB kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Lbl elem contains RT kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Lbl elem contains RP kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Lbl elem contains WT kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Lbl elem contains WP kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Lbl elem contains Index kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ Lbl elem contains L kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Lbl elem contains LI kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Lbl elem contains LBody kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Lbl elem contains Table kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Lbl elem contains TR kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Lbl elem contains TH kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Lbl elem contains TD kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Lbl elem contains THead kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Lbl elem contains TBody kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Lbl elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Lbl elem contains Caption kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Span elem contains Document kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ Span elem contains Part kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Span elem contains Art kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ Span elem contains Div kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Span elem contains Sect kid
+
+
+
+
+
+
+
+
+ Span elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Span elem contains TOC kid
+
+
+
+
+
+
+
+
+ Span elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Span elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Span elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Span elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Span elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Span elem contains P kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ Span elem contains Hn kid
+
+
+
+
+
+
+
+
+ Span elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Span elem contains H kid
+
+
+
+
+
+
+
+
+ Span elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Span elem contains RB kid
+
+
+
+
+
+
+
+
+ Span elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Span elem contains RT kid
+
+
+
+
+
+
+
+
+ Span elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Span elem contains RP kid
+
+
+
+
+
+
+
+
+ Span elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Span elem contains WT kid
+
+
+
+
+
+
+
+
+ Span elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Span elem contains WP kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Span elem contains Index kid
+
+
+
+
+
+
+
+
+ Span elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ Span elem contains L kid
+
+
+
+
+
+
+
+
+ Span elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Span elem contains LI kid
+
+
+
+
+
+
+
+
+ Span elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Span elem contains LBody kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Span elem contains Table kid
+
+
+
+
+
+
+
+
+ Span elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Span elem contains TR kid
+
+
+
+
+
+
+
+
+ Span elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Span elem contains TH kid
+
+
+
+
+
+
+
+
+ Span elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Span elem contains TD kid
+
+
+
+
+
+
+
+
+ Span elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Span elem contains THead kid
+
+
+
+
+
+
+
+
+ Span elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Span elem contains TBody kid
+
+
+
+
+
+
+
+
+ Span elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Span elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Span elem contains Caption kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Quote elem contains Document kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ Quote elem contains Part kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Quote elem contains Art kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ Quote elem contains Div kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Quote elem contains Sect kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Quote elem contains TOC kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Quote elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Quote elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Quote elem contains P kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ Quote elem contains Hn kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Quote elem contains H kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Quote elem contains RB kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Quote elem contains RT kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Quote elem contains RP kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Quote elem contains WT kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Quote elem contains WP kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Quote elem contains Index kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ Quote elem contains L kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Quote elem contains LI kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Quote elem contains LBody kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Quote elem contains Table kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Quote elem contains TR kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Quote elem contains TH kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Quote elem contains TD kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Quote elem contains THead kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Quote elem contains TBody kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Quote elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Quote elem contains Caption kid
+
+
+
+
+
+
+
+
+ Link elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Link elem contains Document kid
+
+
+
+
+
+
+
+
+ Link elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Link elem contains TOC kid
+
+
+
+
+
+
+
+
+ Link elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Link elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Link elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ Link elem contains Link kid
+
+
+
+
+
+
+
+
+ Link elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Link elem contains RB kid
+
+
+
+
+
+
+
+
+ Link elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Link elem contains RT kid
+
+
+
+
+
+
+
+
+ Link elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Link elem contains RP kid
+
+
+
+
+
+
+
+
+ Link elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Link elem contains WT kid
+
+
+
+
+
+
+
+
+ Link elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Link elem contains WP kid
+
+
+
+
+
+
+
+
+ Link elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Link elem contains Index kid
+
+
+
+
+
+
+
+
+ Link elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Link elem contains LI kid
+
+
+
+
+
+
+
+
+ Link elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Link elem contains LBody kid
+
+
+
+
+
+
+
+
+ Link elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Link elem contains TR kid
+
+
+
+
+
+
+
+
+ Link elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Link elem contains TH kid
+
+
+
+
+
+
+
+
+ Link elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Link elem contains TD kid
+
+
+
+
+
+
+
+
+ Link elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Link elem contains THead kid
+
+
+
+
+
+
+
+
+ Link elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Link elem contains TBody kid
+
+
+
+
+
+
+
+
+ Link elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Link elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Reference elem contains Document kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ Reference elem contains Part kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Reference elem contains Art kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ Reference elem contains Div kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Reference elem contains Sect kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Reference elem contains TOC kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Reference elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Reference elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Reference elem contains P kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ Reference elem contains Code kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ Reference elem contains Hn kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Reference elem contains H kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Reference elem contains Quote kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ Reference elem contains Reference kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ Reference elem contains Form kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Reference elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Reference elem contains RB kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Reference elem contains RT kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Reference elem contains RP kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Reference elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Reference elem contains WT kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Reference elem contains WP kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Reference elem contains Index kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ Reference elem contains L kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Reference elem contains LI kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Reference elem contains LBody kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Reference elem contains Table kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Reference elem contains TR kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Reference elem contains TH kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Reference elem contains TD kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Reference elem contains THead kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Reference elem contains TBody kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Reference elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Reference elem contains Caption kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ Reference elem contains Formula kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Annot elem contains Document kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Annot elem contains TOC kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Annot elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain Private kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Private').length == 0
+
+ Annot elem contains Private kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Annot elem contains RB kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Annot elem contains RT kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Annot elem contains RP kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Annot elem contains WT kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Annot elem contains WP kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Annot elem contains Index kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Annot elem contains LI kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Annot elem contains LBody kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Annot elem contains TR kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Annot elem contains TH kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Annot elem contains TD kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Annot elem contains THead kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Annot elem contains TBody kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Annot elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Form elem contains Document kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Form elem contains Art kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Form elem contains Sect kid
+
+
+
+
+
+
+
+
+ Form elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Form elem contains TOC kid
+
+
+
+
+
+
+
+
+ Form elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Form elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Form elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Form elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Form elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Form elem contains P kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ Form elem contains Hn kid
+
+
+
+
+
+
+
+
+ Form elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Form elem contains H kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Form elem contains Span kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Form elem contains Quote kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ Form elem contains Link kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ Form elem contains Annot kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ Form elem contains Form kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Form elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Form elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Form elem contains RB kid
+
+
+
+
+
+
+
+
+ Form elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Form elem contains RT kid
+
+
+
+
+
+
+
+
+ Form elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Form elem contains RP kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Form elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Form elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Form elem contains WT kid
+
+
+
+
+
+
+
+
+ Form elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Form elem contains WP kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Form elem contains Index kid
+
+
+
+
+
+
+
+
+ Form elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Form elem contains LI kid
+
+
+
+
+
+
+
+
+ Form elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Form elem contains LBody kid
+
+
+
+
+
+
+
+
+ Form elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Form elem contains TR kid
+
+
+
+
+
+
+
+
+ Form elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Form elem contains TH kid
+
+
+
+
+
+
+
+
+ Form elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Form elem contains TD kid
+
+
+
+
+
+
+
+
+ Form elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Form elem contains THead kid
+
+
+
+
+
+
+
+
+ Form elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Form elem contains TBody kid
+
+
+
+
+
+
+
+
+ Form elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Form elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Form elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ Form contains more than one Caption kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Ruby elem contains Document kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ Ruby elem contains Part kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Ruby elem contains Art kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ Ruby elem contains Div kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Ruby elem contains Sect kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Ruby elem contains TOC kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Ruby elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Ruby elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Ruby elem contains P kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ Ruby elem contains Note kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ Ruby elem contains Code kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ Ruby elem contains Hn kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Ruby elem contains H kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ Ruby elem contains Lbl kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Ruby elem contains Span kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Ruby elem contains Quote kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ Ruby elem contains Link kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ Ruby elem contains Reference kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ Ruby elem contains Annot kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ Ruby elem contains Form kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Ruby elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Ruby elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Ruby elem contains WT kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Ruby elem contains WP kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Ruby elem contains Index kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ Ruby elem contains L kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Ruby elem contains LI kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Ruby elem contains LBody kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ Ruby elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Ruby elem contains Table kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Ruby elem contains TR kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Ruby elem contains TH kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Ruby elem contains TD kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Ruby elem contains THead kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Ruby elem contains TBody kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Ruby elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Ruby elem contains Caption kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ Ruby elem contains Figure kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ Ruby elem contains Formula kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ RB elem contains Document kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ RB elem contains Part kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ RB elem contains Art kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ RB elem contains Div kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ RB elem contains Sect kid
+
+
+
+
+
+
+
+
+ RB elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ RB elem contains TOC kid
+
+
+
+
+
+
+
+
+ RB elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ RB elem contains TOCI kid
+
+
+
+
+
+
+
+
+ RB elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ RB elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ RB elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ RB elem contains P kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ RB elem contains Note kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ RB elem contains Code kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ RB elem contains Hn kid
+
+
+
+
+
+
+
+
+ RB elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ RB elem contains H kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ RB elem contains Lbl kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ RB elem contains Ruby kid
+
+
+
+
+
+
+
+
+ RB elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ RB elem contains RB kid
+
+
+
+
+
+
+
+
+ RB elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ RB elem contains RT kid
+
+
+
+
+
+
+
+
+ RB elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ RB elem contains RP kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ RB elem contains Warichu kid
+
+
+
+
+
+
+
+
+ RB elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ RB elem contains WT kid
+
+
+
+
+
+
+
+
+ RB elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ RB elem contains WP kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ RB elem contains Index kid
+
+
+
+
+
+
+
+
+ RB elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ RB elem contains L kid
+
+
+
+
+
+
+
+
+ RB elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ RB elem contains LI kid
+
+
+
+
+
+
+
+
+ RB elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ RB elem contains LBody kid
+
+
+
+
+
+
+
+
+ RB elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ RB elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ RB elem contains Table kid
+
+
+
+
+
+
+
+
+ RB elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ RB elem contains TR kid
+
+
+
+
+
+
+
+
+ RB elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ RB elem contains TH kid
+
+
+
+
+
+
+
+
+ RB elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ RB elem contains TD kid
+
+
+
+
+
+
+
+
+ RB elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ RB elem contains THead kid
+
+
+
+
+
+
+
+
+ RB elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ RB elem contains TBody kid
+
+
+
+
+
+
+
+
+ RB elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ RB elem contains TFoot kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ RB elem contains Caption kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ RB elem contains Figure kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ RB elem contains Formula kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ RT elem contains Document kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ RT elem contains Part kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ RT elem contains Art kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ RT elem contains Div kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ RT elem contains Sect kid
+
+
+
+
+
+
+
+
+ RT elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ RT elem contains TOC kid
+
+
+
+
+
+
+
+
+ RT elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ RT elem contains TOCI kid
+
+
+
+
+
+
+
+
+ RT elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ RT elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ RT elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ RT elem contains P kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ RT elem contains Note kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ RT elem contains Code kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ RT elem contains Hn kid
+
+
+
+
+
+
+
+
+ RT elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ RT elem contains H kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ RT elem contains Lbl kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ RT elem contains Ruby kid
+
+
+
+
+
+
+
+
+ RT elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ RT elem contains RB kid
+
+
+
+
+
+
+
+
+ RT elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ RT elem contains RT kid
+
+
+
+
+
+
+
+
+ RT elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ RT elem contains RP kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ RT elem contains Warichu kid
+
+
+
+
+
+
+
+
+ RT elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ RT elem contains WT kid
+
+
+
+
+
+
+
+
+ RT elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ RT elem contains WP kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ RT elem contains Index kid
+
+
+
+
+
+
+
+
+ RT elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ RT elem contains L kid
+
+
+
+
+
+
+
+
+ RT elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ RT elem contains LI kid
+
+
+
+
+
+
+
+
+ RT elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ RT elem contains LBody kid
+
+
+
+
+
+
+
+
+ RT elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ RT elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ RT elem contains Table kid
+
+
+
+
+
+
+
+
+ RT elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ RT elem contains TR kid
+
+
+
+
+
+
+
+
+ RT elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ RT elem contains TH kid
+
+
+
+
+
+
+
+
+ RT elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ RT elem contains TD kid
+
+
+
+
+
+
+
+
+ RT elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ RT elem contains THead kid
+
+
+
+
+
+
+
+
+ RT elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ RT elem contains TBody kid
+
+
+
+
+
+
+
+
+ RT elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ RT elem contains TFoot kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ RT elem contains Caption kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ RT elem contains Figure kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ RT elem contains Formula kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ RP elem contains Document kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ RP elem contains Part kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ RP elem contains Art kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ RP elem contains Div kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ RP elem contains Sect kid
+
+
+
+
+
+
+
+
+ RP elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ RP elem contains TOC kid
+
+
+
+
+
+
+
+
+ RP elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ RP elem contains TOCI kid
+
+
+
+
+
+
+
+
+ RP elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ RP elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ RP elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ RP elem contains P kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ RP elem contains Note kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ RP elem contains Code kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ RP elem contains Hn kid
+
+
+
+
+
+
+
+
+ RP elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ RP elem contains H kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ RP elem contains Lbl kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ RP elem contains Ruby kid
+
+
+
+
+
+
+
+
+ RP elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ RP elem contains RB kid
+
+
+
+
+
+
+
+
+ RP elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ RP elem contains RT kid
+
+
+
+
+
+
+
+
+ RP elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ RP elem contains RP kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ RP elem contains Warichu kid
+
+
+
+
+
+
+
+
+ RP elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ RP elem contains WT kid
+
+
+
+
+
+
+
+
+ RP elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ RP elem contains WP kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ RP elem contains Index kid
+
+
+
+
+
+
+
+
+ RP elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ RP elem contains L kid
+
+
+
+
+
+
+
+
+ RP elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ RP elem contains LI kid
+
+
+
+
+
+
+
+
+ RP elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ RP elem contains LBody kid
+
+
+
+
+
+
+
+
+ RP elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ RP elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ RP elem contains Table kid
+
+
+
+
+
+
+
+
+ RP elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ RP elem contains TR kid
+
+
+
+
+
+
+
+
+ RP elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ RP elem contains TH kid
+
+
+
+
+
+
+
+
+ RP elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ RP elem contains TD kid
+
+
+
+
+
+
+
+
+ RP elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ RP elem contains THead kid
+
+
+
+
+
+
+
+
+ RP elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ RP elem contains TBody kid
+
+
+
+
+
+
+
+
+ RP elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ RP elem contains TFoot kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ RP elem contains Caption kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ RP elem contains Figure kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ RP elem contains Formula kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Warichu elem contains Document kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ Warichu elem contains Part kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Warichu elem contains Art kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ Warichu elem contains Div kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Warichu elem contains Sect kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Warichu elem contains TOC kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Warichu elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Warichu elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Warichu elem contains P kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ Warichu elem contains Note kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ Warichu elem contains Code kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ Warichu elem contains Hn kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Warichu elem contains H kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ Warichu elem contains Lbl kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Warichu elem contains Span kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Warichu elem contains Quote kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ Warichu elem contains Link kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ Warichu elem contains Reference kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ Warichu elem contains Annot kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ Warichu elem contains Form kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Warichu elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Warichu elem contains RB kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Warichu elem contains RT kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Warichu elem contains RP kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Warichu elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Warichu elem contains Index kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ Warichu elem contains L kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Warichu elem contains LI kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Warichu elem contains LBody kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ Warichu elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Warichu elem contains Table kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Warichu elem contains TR kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Warichu elem contains TH kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Warichu elem contains TD kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Warichu elem contains THead kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Warichu elem contains TBody kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Warichu elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Warichu elem contains Caption kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ Warichu elem contains Figure kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ Warichu elem contains Formula kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ WT elem contains Document kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ WT elem contains Part kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ WT elem contains Art kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ WT elem contains Div kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ WT elem contains Sect kid
+
+
+
+
+
+
+
+
+ WT elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ WT elem contains TOC kid
+
+
+
+
+
+
+
+
+ WT elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ WT elem contains TOCI kid
+
+
+
+
+
+
+
+
+ WT elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ WT elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ WT elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ WT elem contains P kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ WT elem contains Note kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ WT elem contains Code kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ WT elem contains Hn kid
+
+
+
+
+
+
+
+
+ WT elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ WT elem contains H kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ WT elem contains Lbl kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ WT elem contains Ruby kid
+
+
+
+
+
+
+
+
+ WT elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ WT elem contains RB kid
+
+
+
+
+
+
+
+
+ WT elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ WT elem contains RT kid
+
+
+
+
+
+
+
+
+ WT elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ WT elem contains RP kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ WT elem contains Warichu kid
+
+
+
+
+
+
+
+
+ WT elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ WT elem contains WT kid
+
+
+
+
+
+
+
+
+ WT elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ WT elem contains WP kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ WT elem contains Index kid
+
+
+
+
+
+
+
+
+ WT elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ WT elem contains L kid
+
+
+
+
+
+
+
+
+ WT elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ WT elem contains LI kid
+
+
+
+
+
+
+
+
+ WT elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ WT elem contains LBody kid
+
+
+
+
+
+
+
+
+ WT elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ WT elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ WT elem contains Table kid
+
+
+
+
+
+
+
+
+ WT elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ WT elem contains TR kid
+
+
+
+
+
+
+
+
+ WT elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ WT elem contains TH kid
+
+
+
+
+
+
+
+
+ WT elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ WT elem contains TD kid
+
+
+
+
+
+
+
+
+ WT elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ WT elem contains THead kid
+
+
+
+
+
+
+
+
+ WT elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ WT elem contains TBody kid
+
+
+
+
+
+
+
+
+ WT elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ WT elem contains TFoot kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ WT elem contains Caption kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ WT elem contains Figure kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ WT elem contains Formula kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ WP elem contains Document kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ WP elem contains Part kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ WP elem contains Art kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ WP elem contains Div kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ WP elem contains Sect kid
+
+
+
+
+
+
+
+
+ WP elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ WP elem contains TOC kid
+
+
+
+
+
+
+
+
+ WP elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ WP elem contains TOCI kid
+
+
+
+
+
+
+
+
+ WP elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ WP elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ WP elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ WP elem contains P kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ WP elem contains Note kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ WP elem contains Code kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ WP elem contains Hn kid
+
+
+
+
+
+
+
+
+ WP elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ WP elem contains H kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ WP elem contains Lbl kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ WP elem contains Ruby kid
+
+
+
+
+
+
+
+
+ WP elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ WP elem contains RB kid
+
+
+
+
+
+
+
+
+ WP elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ WP elem contains RT kid
+
+
+
+
+
+
+
+
+ WP elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ WP elem contains RP kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ WP elem contains Warichu kid
+
+
+
+
+
+
+
+
+ WP elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ WP elem contains WT kid
+
+
+
+
+
+
+
+
+ WP elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ WP elem contains WP kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ WP elem contains Index kid
+
+
+
+
+
+
+
+
+ WP elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ WP elem contains L kid
+
+
+
+
+
+
+
+
+ WP elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ WP elem contains LI kid
+
+
+
+
+
+
+
+
+ WP elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ WP elem contains LBody kid
+
+
+
+
+
+
+
+
+ WP elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ WP elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ WP elem contains Table kid
+
+
+
+
+
+
+
+
+ WP elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ WP elem contains TR kid
+
+
+
+
+
+
+
+
+ WP elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ WP elem contains TH kid
+
+
+
+
+
+
+
+
+ WP elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ WP elem contains TD kid
+
+
+
+
+
+
+
+
+ WP elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ WP elem contains THead kid
+
+
+
+
+
+
+
+
+ WP elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ WP elem contains TBody kid
+
+
+
+
+
+
+
+
+ WP elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ WP elem contains TFoot kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ WP elem contains Caption kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ WP elem contains Figure kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ WP elem contains Formula kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Index elem contains Document kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Index elem contains Art kid
+
+
+
+
+
+
+
+
+ Index elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Index elem contains TOC kid
+
+
+
+
+
+
+
+
+ Index elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Index elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Index elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Index elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ Index elem contains Code kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ Index elem contains Lbl kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Index elem contains Span kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Index elem contains Quote kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ Index elem contains Link kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ Index elem contains Form kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Index elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Index elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Index elem contains RB kid
+
+
+
+
+
+
+
+
+ Index elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Index elem contains RT kid
+
+
+
+
+
+
+
+
+ Index elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Index elem contains RP kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Index elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Index elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Index elem contains WT kid
+
+
+
+
+
+
+
+
+ Index elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Index elem contains WP kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Index elem contains Index kid
+
+
+
+
+
+
+
+
+ Index elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Index elem contains LI kid
+
+
+
+
+
+
+
+
+ Index elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Index elem contains LBody kid
+
+
+
+
+
+
+
+
+ Index elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ Index elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ Index elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Index elem contains TR kid
+
+
+
+
+
+
+
+
+ Index elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Index elem contains TH kid
+
+
+
+
+
+
+
+
+ Index elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Index elem contains TD kid
+
+
+
+
+
+
+
+
+ Index elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Index elem contains THead kid
+
+
+
+
+
+
+
+
+ Index elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Index elem contains TBody kid
+
+
+
+
+
+
+
+
+ Index elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Index elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Index elem should not contain content item kid
+ hasContentItems == false
+
+ Index elem contains content item kid
+
+
+
+
+
+
+
+
+ L elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ L elem contains Document kid
+
+
+
+
+
+
+
+
+ L elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ L elem contains Part kid
+
+
+
+
+
+
+
+
+ L elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ L elem contains Art kid
+
+
+
+
+
+
+
+
+ L elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ L elem contains Div kid
+
+
+
+
+
+
+
+
+ L elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ L elem contains Sect kid
+
+
+
+
+
+
+
+
+ L elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ L elem contains TOC kid
+
+
+
+
+
+
+
+
+ L elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ L elem contains TOCI kid
+
+
+
+
+
+
+
+
+ L elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ L elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ L elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ L elem contains P kid
+
+
+
+
+
+
+
+
+ L elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ L elem contains Note kid
+
+
+
+
+
+
+
+
+ L elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ L elem contains Code kid
+
+
+
+
+
+
+
+
+ L elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ L elem contains Hn kid
+
+
+
+
+
+
+
+
+ L elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ L elem contains H kid
+
+
+
+
+
+
+
+
+ L elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ L elem contains Lbl kid
+
+
+
+
+
+
+
+
+ L elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ L elem contains Span kid
+
+
+
+
+
+
+
+
+ L elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ L elem contains Quote kid
+
+
+
+
+
+
+
+
+ L elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ L elem contains Link kid
+
+
+
+
+
+
+
+
+ L elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ L elem contains Reference kid
+
+
+
+
+
+
+
+
+ L elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ L elem contains Annot kid
+
+
+
+
+
+
+
+
+ L elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ L elem contains Form kid
+
+
+
+
+
+
+
+
+ L elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ L elem contains Ruby kid
+
+
+
+
+
+
+
+
+ L elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ L elem contains RB kid
+
+
+
+
+
+
+
+
+ L elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ L elem contains RT kid
+
+
+
+
+
+
+
+
+ L elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ L elem contains RP kid
+
+
+
+
+
+
+
+
+ L elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ L elem contains Warichu kid
+
+
+
+
+
+
+
+
+ L elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ L elem contains WT kid
+
+
+
+
+
+
+
+
+ L elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ L elem contains WP kid
+
+
+
+
+
+
+
+
+ L elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ L elem contains Index kid
+
+
+
+
+
+
+
+
+ L elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ L elem contains LBody kid
+
+
+
+
+
+
+
+
+ L elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ L elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ L elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ L elem contains Table kid
+
+
+
+
+
+
+
+
+ L elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ L elem contains TR kid
+
+
+
+
+
+
+
+
+ L elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ L elem contains TH kid
+
+
+
+
+
+
+
+
+ L elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ L elem contains TD kid
+
+
+
+
+
+
+
+
+ L elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ L elem contains THead kid
+
+
+
+
+
+
+
+
+ L elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ L elem contains TBody kid
+
+
+
+
+
+
+
+
+ L elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ L elem contains TFoot kid
+
+
+
+
+
+
+
+
+ L elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ L contains more than one Caption kid
+
+
+
+
+
+
+
+
+ L elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ L elem contains Figure kid
+
+
+
+
+
+
+
+
+ L elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ L elem contains Formula kid
+
+
+
+
+
+
+
+
+ L elem should not contain content item kid
+ hasContentItems == false
+
+ L elem contains content item kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ LI elem contains Document kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ LI elem contains Part kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ LI elem contains Art kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ LI elem contains Sect kid
+
+
+
+
+
+
+
+
+ LI elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ LI elem contains TOC kid
+
+
+
+
+
+
+
+
+ LI elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ LI elem contains TOCI kid
+
+
+
+
+
+
+
+
+ LI elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ LI elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ LI elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ LI elem contains P kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ LI elem contains Note kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ LI elem contains Code kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ LI elem contains Hn kid
+
+
+
+
+
+
+
+
+ LI elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ LI elem contains H kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ LI elem contains Span kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ LI elem contains Quote kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ LI elem contains Link kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ LI elem contains Reference kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ LI elem contains Annot kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ LI elem contains Form kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ LI elem contains Ruby kid
+
+
+
+
+
+
+
+
+ LI elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ LI elem contains RB kid
+
+
+
+
+
+
+
+
+ LI elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ LI elem contains RT kid
+
+
+
+
+
+
+
+
+ LI elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ LI elem contains RP kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ LI elem contains Warichu kid
+
+
+
+
+
+
+
+
+ LI elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ LI elem contains WT kid
+
+
+
+
+
+
+
+
+ LI elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ LI elem contains WP kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ LI elem contains Index kid
+
+
+
+
+
+
+
+
+ LI elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ LI elem contains L kid
+
+
+
+
+
+
+
+
+ LI elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ LI elem contains LI kid
+
+
+
+
+
+
+
+
+ LI elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ LI elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ LI elem contains Table kid
+
+
+
+
+
+
+
+
+ LI elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ LI elem contains TR kid
+
+
+
+
+
+
+
+
+ LI elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ LI elem contains TH kid
+
+
+
+
+
+
+
+
+ LI elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ LI elem contains TD kid
+
+
+
+
+
+
+
+
+ LI elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ LI elem contains THead kid
+
+
+
+
+
+
+
+
+ LI elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ LI elem contains TBody kid
+
+
+
+
+
+
+
+
+ LI elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ LI elem contains TFoot kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ LI elem contains Caption kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ LI elem contains Figure kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ LI elem contains Formula kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ LBody elem contains Document kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ LBody elem contains TOC kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ LBody elem contains TOCI kid
+
+
+
+
+
+
+
+
+ LBody elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ LBody contains more than one H kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ LBody elem contains Lbl kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ LBody elem contains RB kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ LBody elem contains RT kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ LBody elem contains RP kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ LBody elem contains WT kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ LBody elem contains WP kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ LBody elem contains LI kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ LBody elem contains LBody kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ LBody elem contains TR kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ LBody elem contains TH kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ LBody elem contains TD kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ LBody elem contains THead kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ LBody elem contains TBody kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ LBody elem contains TFoot kid
+
+
+
+
+
+
+
+
+ LBody elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ LBody contains more than one Caption kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ BibEntry elem contains Document kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ BibEntry elem contains Art kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ BibEntry elem contains Sect kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ BibEntry elem contains TOC kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ BibEntry elem contains TOCI kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ BibEntry elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ BibEntry elem contains Code kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ BibEntry elem contains Hn kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ BibEntry elem contains H kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ BibEntry elem contains Quote kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ BibEntry elem contains Form kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ BibEntry elem contains Ruby kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ BibEntry elem contains RB kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ BibEntry elem contains RT kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ BibEntry elem contains RP kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ BibEntry elem contains Warichu kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ BibEntry elem contains WT kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ BibEntry elem contains WP kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ BibEntry elem contains Index kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ BibEntry elem contains L kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ BibEntry elem contains LI kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ BibEntry elem contains LBody kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ BibEntry elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ BibEntry elem contains Table kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ BibEntry elem contains TR kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ BibEntry elem contains TH kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ BibEntry elem contains TD kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ BibEntry elem contains THead kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ BibEntry elem contains TBody kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ BibEntry elem contains TFoot kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ BibEntry elem contains Caption kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ BibEntry elem contains Formula kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Table elem contains Document kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ Table elem contains Part kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Table elem contains Art kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ Table elem contains Div kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Table elem contains Sect kid
+
+
+
+
+
+
+
+
+ Table elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Table elem contains TOC kid
+
+
+
+
+
+
+
+
+ Table elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Table elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Table elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Table elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Table elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Table elem contains P kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ Table elem contains Note kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ Table elem contains Code kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ Table elem contains Hn kid
+
+
+
+
+
+
+
+
+ Table elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Table elem contains H kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ Table elem contains Lbl kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Table elem contains Span kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Table elem contains Quote kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ Table elem contains Link kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ Table elem contains Reference kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ Table elem contains Annot kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ Table elem contains Form kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Table elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Table elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Table elem contains RB kid
+
+
+
+
+
+
+
+
+ Table elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Table elem contains RT kid
+
+
+
+
+
+
+
+
+ Table elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Table elem contains RP kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Table elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Table elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Table elem contains WT kid
+
+
+
+
+
+
+
+
+ Table elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Table elem contains WP kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Table elem contains Index kid
+
+
+
+
+
+
+
+
+ Table elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ Table elem contains L kid
+
+
+
+
+
+
+
+
+ Table elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Table elem contains LI kid
+
+
+
+
+
+
+
+
+ Table elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Table elem contains LBody kid
+
+
+
+
+
+
+
+
+ Table elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ Table elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Table elem contains Table kid
+
+
+
+
+
+
+
+
+ Table elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Table elem contains TH kid
+
+
+
+
+
+
+
+
+ Table elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Table elem contains TD kid
+
+
+
+
+
+
+
+
+ Table elem should contain zero or one THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1
+
+ Table contains more than one THead kid
+
+
+
+
+
+
+
+
+ Table elem should contain zero or one TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1
+
+ Table contains more than one TFoot kid
+
+
+
+
+
+
+
+
+ Table elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ Table contains more than one Caption kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ Table elem contains Figure kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ Table elem contains Formula kid
+
+
+
+
+
+
+
+
+ Table elem should not contain content item kid
+ hasContentItems == false
+
+ Table elem contains content item kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ TR elem contains Document kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ TR elem contains Part kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ TR elem contains Art kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ TR elem contains Div kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ TR elem contains Sect kid
+
+
+
+
+
+
+
+
+ TR elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ TR elem contains TOC kid
+
+
+
+
+
+
+
+
+ TR elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ TR elem contains TOCI kid
+
+
+
+
+
+
+
+
+ TR elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ TR elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ TR elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ TR elem contains P kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ TR elem contains Note kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ TR elem contains Code kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ TR elem contains Hn kid
+
+
+
+
+
+
+
+
+ TR elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ TR elem contains H kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ TR elem contains Lbl kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ TR elem contains Span kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ TR elem contains Quote kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ TR elem contains Link kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ TR elem contains Reference kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ TR elem contains Annot kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ TR elem contains Form kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ TR elem contains Ruby kid
+
+
+
+
+
+
+
+
+ TR elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ TR elem contains RB kid
+
+
+
+
+
+
+
+
+ TR elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ TR elem contains RT kid
+
+
+
+
+
+
+
+
+ TR elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ TR elem contains RP kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ TR elem contains Warichu kid
+
+
+
+
+
+
+
+
+ TR elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ TR elem contains WT kid
+
+
+
+
+
+
+
+
+ TR elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ TR elem contains WP kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ TR elem contains Index kid
+
+
+
+
+
+
+
+
+ TR elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ TR elem contains L kid
+
+
+
+
+
+
+
+
+ TR elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ TR elem contains LI kid
+
+
+
+
+
+
+
+
+ TR elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ TR elem contains LBody kid
+
+
+
+
+
+
+
+
+ TR elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ TR elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ TR elem contains Table kid
+
+
+
+
+
+
+
+
+ TR elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ TR elem contains TR kid
+
+
+
+
+
+
+
+
+ TR elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ TR elem contains THead kid
+
+
+
+
+
+
+
+
+ TR elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ TR elem contains TBody kid
+
+
+
+
+
+
+
+
+ TR elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ TR elem contains TFoot kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ TR elem contains Caption kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ TR elem contains Figure kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ TR elem contains Formula kid
+
+
+
+
+
+
+
+
+ TR elem should not contain content item kid
+ hasContentItems == false
+
+ TR elem contains content item kid
+
+
+
+
+
+
+
+
+ TH elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ TH elem contains Document kid
+
+
+
+
+
+
+
+
+ TH elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ TH elem contains Part kid
+
+
+
+
+
+
+
+
+ TH elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ TH elem contains TOC kid
+
+
+
+
+
+
+
+
+ TH elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ TH elem contains TOCI kid
+
+
+
+
+
+
+
+
+ TH elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ TH elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ TH elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ TH contains more than one H kid
+
+
+
+
+
+
+
+
+ TH elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ TH elem contains RB kid
+
+
+
+
+
+
+
+
+ TH elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ TH elem contains RT kid
+
+
+
+
+
+
+
+
+ TH elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ TH elem contains RP kid
+
+
+
+
+
+
+
+
+ TH elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ TH elem contains WT kid
+
+
+
+
+
+
+
+
+ TH elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ TH elem contains WP kid
+
+
+
+
+
+
+
+
+ TH elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ TH elem contains LI kid
+
+
+
+
+
+
+
+
+ TH elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ TH elem contains LBody kid
+
+
+
+
+
+
+
+
+ TH elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ TH elem contains TR kid
+
+
+
+
+
+
+
+
+ TH elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ TH elem contains TH kid
+
+
+
+
+
+
+
+
+ TH elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ TH elem contains TD kid
+
+
+
+
+
+
+
+
+ TH elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ TH elem contains THead kid
+
+
+
+
+
+
+
+
+ TH elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ TH elem contains TBody kid
+
+
+
+
+
+
+
+
+ TH elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ TH elem contains TFoot kid
+
+
+
+
+
+
+
+
+ TH elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ TH elem contains Caption kid
+
+
+
+
+
+
+
+
+ TD elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ TD elem contains Document kid
+
+
+
+
+
+
+
+
+ TD elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ TD elem contains Part kid
+
+
+
+
+
+
+
+
+ TD elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ TD elem contains TOC kid
+
+
+
+
+
+
+
+
+ TD elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ TD elem contains TOCI kid
+
+
+
+
+
+
+
+
+ TD elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ TD elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ TD elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ TD contains more than one H kid
+
+
+
+
+
+
+
+
+ TD elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ TD elem contains RB kid
+
+
+
+
+
+
+
+
+ TD elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ TD elem contains RT kid
+
+
+
+
+
+
+
+
+ TD elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ TD elem contains RP kid
+
+
+
+
+
+
+
+
+ TD elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ TD elem contains WT kid
+
+
+
+
+
+
+
+
+ TD elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ TD elem contains WP kid
+
+
+
+
+
+
+
+
+ TD elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ TD elem contains LI kid
+
+
+
+
+
+
+
+
+ TD elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ TD elem contains LBody kid
+
+
+
+
+
+
+
+
+ TD elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ TD elem contains TR kid
+
+
+
+
+
+
+
+
+ TD elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ TD elem contains TH kid
+
+
+
+
+
+
+
+
+ TD elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ TD elem contains TD kid
+
+
+
+
+
+
+
+
+ TD elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ TD elem contains THead kid
+
+
+
+
+
+
+
+
+ TD elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ TD elem contains TBody kid
+
+
+
+
+
+
+
+
+ TD elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ TD elem contains TFoot kid
+
+
+
+
+
+
+
+
+ TD elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ TD elem contains Caption kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ THead elem contains Document kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ THead elem contains Part kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ THead elem contains Art kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ THead elem contains Div kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ THead elem contains Sect kid
+
+
+
+
+
+
+
+
+ THead elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ THead elem contains TOC kid
+
+
+
+
+
+
+
+
+ THead elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ THead elem contains TOCI kid
+
+
+
+
+
+
+
+
+ THead elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ THead elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ THead elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ THead elem contains P kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ THead elem contains Note kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ THead elem contains Code kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ THead elem contains Hn kid
+
+
+
+
+
+
+
+
+ THead elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ THead elem contains H kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ THead elem contains Lbl kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ THead elem contains Span kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ THead elem contains Quote kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ THead elem contains Link kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ THead elem contains Reference kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ THead elem contains Annot kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ THead elem contains Form kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ THead elem contains Ruby kid
+
+
+
+
+
+
+
+
+ THead elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ THead elem contains RB kid
+
+
+
+
+
+
+
+
+ THead elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ THead elem contains RT kid
+
+
+
+
+
+
+
+
+ THead elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ THead elem contains RP kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ THead elem contains Warichu kid
+
+
+
+
+
+
+
+
+ THead elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ THead elem contains WT kid
+
+
+
+
+
+
+
+
+ THead elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ THead elem contains WP kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ THead elem contains Index kid
+
+
+
+
+
+
+
+
+ THead elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ THead elem contains L kid
+
+
+
+
+
+
+
+
+ THead elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ THead elem contains LI kid
+
+
+
+
+
+
+
+
+ THead elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ THead elem contains LBody kid
+
+
+
+
+
+
+
+
+ THead elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ THead elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ THead elem contains Table kid
+
+
+
+
+
+
+
+
+ THead elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ THead elem contains TH kid
+
+
+
+
+
+
+
+
+ THead elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ THead elem contains TD kid
+
+
+
+
+
+
+
+
+ THead elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ THead elem contains THead kid
+
+
+
+
+
+
+
+
+ THead elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ THead elem contains TBody kid
+
+
+
+
+
+
+
+
+ THead elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ THead elem contains TFoot kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ THead elem contains Caption kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ THead elem contains Figure kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ THead elem contains Formula kid
+
+
+
+
+
+
+
+
+ THead elem should not contain content item kid
+ hasContentItems == false
+
+ THead elem contains content item kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ TBody elem contains Document kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ TBody elem contains Part kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ TBody elem contains Art kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ TBody elem contains Div kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ TBody elem contains Sect kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ TBody elem contains TOC kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ TBody elem contains TOCI kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ TBody elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ TBody elem contains P kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ TBody elem contains Note kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ TBody elem contains Code kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ TBody elem contains Hn kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ TBody elem contains H kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ TBody elem contains Lbl kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ TBody elem contains Span kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ TBody elem contains Quote kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ TBody elem contains Link kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ TBody elem contains Reference kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ TBody elem contains Annot kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ TBody elem contains Form kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ TBody elem contains Ruby kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ TBody elem contains RB kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ TBody elem contains RT kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ TBody elem contains RP kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ TBody elem contains Warichu kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ TBody elem contains WT kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ TBody elem contains WP kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ TBody elem contains Index kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ TBody elem contains L kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ TBody elem contains LI kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ TBody elem contains LBody kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ TBody elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ TBody elem contains Table kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ TBody elem contains TH kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ TBody elem contains TD kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ TBody elem contains THead kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ TBody elem contains TBody kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ TBody elem contains TFoot kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ TBody elem contains Caption kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ TBody elem contains Figure kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ TBody elem contains Formula kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain content item kid
+ hasContentItems == false
+
+ TBody elem contains content item kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ TFoot elem contains Document kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ TFoot elem contains Part kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ TFoot elem contains Art kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ TFoot elem contains Div kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ TFoot elem contains Sect kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ TFoot elem contains TOC kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ TFoot elem contains TOCI kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ TFoot elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ TFoot elem contains P kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ TFoot elem contains Note kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ TFoot elem contains Code kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0
+
+ TFoot elem contains Hn kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ TFoot elem contains H kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ TFoot elem contains Lbl kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ TFoot elem contains Span kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ TFoot elem contains Quote kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ TFoot elem contains Link kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ TFoot elem contains Reference kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ TFoot elem contains Annot kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ TFoot elem contains Form kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ TFoot elem contains Ruby kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ TFoot elem contains RB kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ TFoot elem contains RT kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ TFoot elem contains RP kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ TFoot elem contains Warichu kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ TFoot elem contains WT kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ TFoot elem contains WP kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ TFoot elem contains Index kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ TFoot elem contains L kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ TFoot elem contains LI kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ TFoot elem contains LBody kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ TFoot elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ TFoot elem contains Table kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ TFoot elem contains TH kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ TFoot elem contains TD kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ TFoot elem contains THead kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ TFoot elem contains TBody kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ TFoot elem contains TFoot kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ TFoot elem contains Caption kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ TFoot elem contains Figure kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ TFoot elem contains Formula kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain content item kid
+ hasContentItems == false
+
+ TFoot elem contains content item kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Caption elem contains Document kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Caption elem contains TOC kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Caption elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Caption elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ Caption contains more than one H kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Caption elem contains RB kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Caption elem contains RT kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Caption elem contains RP kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Caption elem contains WT kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Caption elem contains WP kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Caption elem contains LI kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Caption elem contains LBody kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Caption elem contains TR kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Caption elem contains TH kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Caption elem contains TD kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Caption elem contains THead kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Caption elem contains TBody kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Caption elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Caption elem contains Caption kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Figure elem contains Document kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Figure elem contains TOC kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Figure elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Figure elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ Figure contains more than one H kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Figure elem contains RB kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Figure elem contains RT kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Figure elem contains RP kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Figure elem contains WT kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Figure elem contains WP kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Figure elem contains LI kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Figure elem contains LBody kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Figure elem contains TR kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Figure elem contains TH kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Figure elem contains TD kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Figure elem contains THead kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Figure elem contains TBody kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Figure elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Figure elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ Figure contains more than one Caption kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Formula elem contains Document kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Formula elem contains Art kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Formula elem contains Sect kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Formula elem contains TOC kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Formula elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Formula elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ Formula contains more than one H kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Formula elem contains RB kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Formula elem contains RT kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Formula elem contains RP kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Formula elem contains WT kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Formula elem contains WP kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Formula elem contains LI kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Formula elem contains LBody kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Formula elem contains TR kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Formula elem contains TH kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Formula elem contains TD kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Formula elem contains THead kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Formula elem contains TBody kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Formula elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Formula elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ Formula contains more than one Caption kid
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/ISO-32000-2-Tagged.xml b/PDF_UA/ISO-32000-2-Tagged.xml
new file mode 100644
index 00000000..2b71c2e4
--- /dev/null
+++ b/PDF_UA/ISO-32000-2-Tagged.xml
@@ -0,0 +1,19895 @@
+
+
+
+ Tagged pdf profile for PDF 2.0 specification
+ Profile for validation of tagged pdf structure tree relations
+
+
+
+
+
+ Every structure element shall be mapped to standard type
+ false
+
+ Structure element does not map to standard structure type
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should contain zero or one Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length <= 1
+
+ StructTreeRoot contains more than one Document kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ StructTreeRoot elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ StructTreeRoot elem contains Part kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ StructTreeRoot elem contains Art kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ StructTreeRoot elem contains Div kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ StructTreeRoot elem contains Sect kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ StructTreeRoot elem contains TOC kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ StructTreeRoot elem contains TOCI kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ StructTreeRoot elem contains Aside kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ StructTreeRoot elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ StructTreeRoot elem contains P kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ StructTreeRoot elem contains Note kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ StructTreeRoot elem contains Code kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ StructTreeRoot elem contains Hn kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ StructTreeRoot elem contains H kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ StructTreeRoot elem contains Title kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ StructTreeRoot elem contains Sub kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ StructTreeRoot elem contains Lbl kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ StructTreeRoot elem contains Em kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ StructTreeRoot elem contains Strong kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ StructTreeRoot elem contains Span kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ StructTreeRoot elem contains Quote kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ StructTreeRoot elem contains Link kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ StructTreeRoot elem contains Reference kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ StructTreeRoot elem contains Annot kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ StructTreeRoot elem contains Form kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ StructTreeRoot elem contains Ruby kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ StructTreeRoot elem contains RB kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ StructTreeRoot elem contains RT kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ StructTreeRoot elem contains RP kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ StructTreeRoot elem contains Warichu kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ StructTreeRoot elem contains WT kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ StructTreeRoot elem contains WP kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain FENote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0
+
+ StructTreeRoot elem contains FENote kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ StructTreeRoot elem contains Index kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ StructTreeRoot elem contains L kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ StructTreeRoot elem contains LI kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ StructTreeRoot elem contains LBody kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ StructTreeRoot elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ StructTreeRoot elem contains Table kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ StructTreeRoot elem contains TR kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ StructTreeRoot elem contains TH kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ StructTreeRoot elem contains TD kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ StructTreeRoot elem contains THead kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ StructTreeRoot elem contains TBody kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ StructTreeRoot elem contains TFoot kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ StructTreeRoot elem contains Caption kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ StructTreeRoot elem contains Figure kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ StructTreeRoot elem contains Formula kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain Artifact kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0
+
+ StructTreeRoot elem contains Artifact kid
+
+
+
+
+
+
+
+
+ StructTreeRoot elem should not contain content item kid
+ hasContentItems == false
+
+ StructTreeRoot elem contains content item kid
+
+
+
+
+
+
+
+
+ Document elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Document elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Document elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ Document contains more than one H kid
+
+
+
+
+
+
+
+
+ Document elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ Document elem contains Sub kid
+
+
+
+
+
+
+
+
+ Document elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ Document elem contains Lbl kid
+
+
+
+
+
+
+
+
+ Document elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ Document elem contains Em kid
+
+
+
+
+
+
+
+
+ Document elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ Document elem contains Strong kid
+
+
+
+
+
+
+
+
+ Document elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Document elem contains Span kid
+
+
+
+
+
+
+
+
+ Document elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Document elem contains Quote kid
+
+
+
+
+
+
+
+
+ Document elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ Document elem contains Reference kid
+
+
+
+
+
+
+
+
+ Document elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Document elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Document elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Document elem contains RB kid
+
+
+
+
+
+
+
+
+ Document elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Document elem contains RT kid
+
+
+
+
+
+
+
+
+ Document elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Document elem contains RP kid
+
+
+
+
+
+
+
+
+ Document elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Document elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Document elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Document elem contains WT kid
+
+
+
+
+
+
+
+
+ Document elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Document elem contains WP kid
+
+
+
+
+
+
+
+
+ Document elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Document elem contains LI kid
+
+
+
+
+
+
+
+
+ Document elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Document elem contains LBody kid
+
+
+
+
+
+
+
+
+ Document elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ Document elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ Document elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Document elem contains TR kid
+
+
+
+
+
+
+
+
+ Document elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Document elem contains TH kid
+
+
+
+
+
+
+
+
+ Document elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Document elem contains TD kid
+
+
+
+
+
+
+
+
+ Document elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Document elem contains THead kid
+
+
+
+
+
+
+
+
+ Document elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Document elem contains TBody kid
+
+
+
+
+
+
+
+
+ Document elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Document elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Document elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Document elem contains Caption kid
+
+
+
+
+
+
+
+
+ Document elem should not contain content item kid
+ hasContentItems == false
+
+ Document elem contains content item kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ DocumentFragment elem contains TOCI kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ DocumentFragment contains more than one H kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ DocumentFragment elem contains Sub kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ DocumentFragment elem contains Lbl kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ DocumentFragment elem contains Em kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ DocumentFragment elem contains Strong kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ DocumentFragment elem contains Span kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ DocumentFragment elem contains Quote kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ DocumentFragment elem contains Reference kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ DocumentFragment elem contains Ruby kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ DocumentFragment elem contains RB kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ DocumentFragment elem contains RT kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ DocumentFragment elem contains RP kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ DocumentFragment elem contains Warichu kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ DocumentFragment elem contains WT kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ DocumentFragment elem contains WP kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ DocumentFragment elem contains LI kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ DocumentFragment elem contains LBody kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ DocumentFragment elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ DocumentFragment elem contains TR kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ DocumentFragment elem contains TH kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ DocumentFragment elem contains TD kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ DocumentFragment elem contains THead kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ DocumentFragment elem contains TBody kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ DocumentFragment elem contains TFoot kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ DocumentFragment elem contains Caption kid
+
+
+
+
+
+
+
+
+ DocumentFragment elem should not contain content item kid
+ hasContentItems == false
+
+ DocumentFragment elem contains content item kid
+
+
+
+
+
+
+
+
+ Part elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ Part elem contains Em kid
+
+
+
+
+
+
+
+
+ Part elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ Part elem contains Strong kid
+
+
+
+
+
+
+
+
+ Part elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Part elem contains Span kid
+
+
+
+
+
+
+
+
+ Part elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Part elem contains Quote kid
+
+
+
+
+
+
+
+
+ Part elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Part elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Part elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Part elem contains RB kid
+
+
+
+
+
+
+
+
+ Part elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Part elem contains RT kid
+
+
+
+
+
+
+
+
+ Part elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Part elem contains RP kid
+
+
+
+
+
+
+
+
+ Part elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Part elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Part elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Part elem contains WT kid
+
+
+
+
+
+
+
+
+ Part elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Part elem contains WP kid
+
+
+
+
+
+
+
+
+ Part elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Part elem contains LI kid
+
+
+
+
+
+
+
+
+ Part elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Part elem contains LBody kid
+
+
+
+
+
+
+
+
+ Part elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Part elem contains TR kid
+
+
+
+
+
+
+
+
+ Part elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Part elem contains TH kid
+
+
+
+
+
+
+
+
+ Part elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Part elem contains TD kid
+
+
+
+
+
+
+
+
+ Part elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Part elem contains THead kid
+
+
+
+
+
+
+
+
+ Part elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Part elem contains TBody kid
+
+
+
+
+
+
+
+
+ Part elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Part elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Part elem should not contain content item kid
+ hasContentItems == false
+
+ Part elem contains content item kid
+
+
+
+
+
+
+
+
+ Div elem should not contain content item kid
+ hasContentItems == false
+
+ Div elem contains content item kid
+
+
+
+
+
+
+
+
+ Art elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Art elem contains Document kid
+
+
+
+
+
+
+
+
+ Art elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Art elem contains Art kid
+
+
+
+
+
+
+
+
+ Art elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Art elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Art elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ Art contains more than one H kid
+
+
+
+
+
+
+
+
+ Art elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ Art elem contains Sub kid
+
+
+
+
+
+
+
+
+ Art elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ Art elem contains Em kid
+
+
+
+
+
+
+
+
+ Art elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ Art elem contains Strong kid
+
+
+
+
+
+
+
+
+ Art elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Art elem contains Span kid
+
+
+
+
+
+
+
+
+ Art elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Art elem contains Quote kid
+
+
+
+
+
+
+
+
+ Art elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ Art elem contains Reference kid
+
+
+
+
+
+
+
+
+ Art elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Art elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Art elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Art elem contains RB kid
+
+
+
+
+
+
+
+
+ Art elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Art elem contains RT kid
+
+
+
+
+
+
+
+
+ Art elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Art elem contains RP kid
+
+
+
+
+
+
+
+
+ Art elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Art elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Art elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Art elem contains WT kid
+
+
+
+
+
+
+
+
+ Art elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Art elem contains WP kid
+
+
+
+
+
+
+
+
+ Art elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Art elem contains LI kid
+
+
+
+
+
+
+
+
+ Art elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Art elem contains LBody kid
+
+
+
+
+
+
+
+
+ Art elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ Art elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ Art elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Art elem contains TR kid
+
+
+
+
+
+
+
+
+ Art elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Art elem contains TH kid
+
+
+
+
+
+
+
+
+ Art elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Art elem contains TD kid
+
+
+
+
+
+
+
+
+ Art elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Art elem contains THead kid
+
+
+
+
+
+
+
+
+ Art elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Art elem contains TBody kid
+
+
+
+
+
+
+
+
+ Art elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Art elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Art elem should not contain content item kid
+ hasContentItems == false
+
+ Art elem contains content item kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Sect elem contains Document kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Sect elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Sect elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ Sect contains more than one H kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ Sect elem contains Sub kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ Sect elem contains Em kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ Sect elem contains Strong kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Sect elem contains Span kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Sect elem contains Quote kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ Sect elem contains Reference kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Sect elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Sect elem contains RB kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Sect elem contains RT kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Sect elem contains RP kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Sect elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Sect elem contains WT kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Sect elem contains WP kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Sect elem contains LI kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Sect elem contains LBody kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ Sect elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Sect elem contains TR kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Sect elem contains TH kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Sect elem contains TD kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Sect elem contains THead kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Sect elem contains TBody kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Sect elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Sect elem should not contain content item kid
+ hasContentItems == false
+
+ Sect elem contains content item kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ TOC elem contains Document kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ TOC elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ TOC elem contains Part kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ TOC elem contains Art kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ TOC elem contains Div kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ TOC elem contains Sect kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ TOC elem contains Aside kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ TOC elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ TOC elem contains P kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ TOC elem contains Note kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ TOC elem contains Code kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ TOC elem contains Hn kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ TOC elem contains H kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ TOC elem contains Title kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ TOC elem contains Sub kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ TOC elem contains Lbl kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ TOC elem contains Em kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ TOC elem contains Strong kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ TOC elem contains Span kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ TOC elem contains Quote kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ TOC elem contains Link kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ TOC elem contains Reference kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ TOC elem contains Annot kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ TOC elem contains Form kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ TOC elem contains Ruby kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ TOC elem contains RB kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ TOC elem contains RT kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ TOC elem contains RP kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ TOC elem contains Warichu kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ TOC elem contains WT kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ TOC elem contains WP kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain FENote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0
+
+ TOC elem contains FENote kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ TOC elem contains Index kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ TOC elem contains L kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ TOC elem contains LI kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ TOC elem contains LBody kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ TOC elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ TOC elem contains Table kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ TOC elem contains TR kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ TOC elem contains TH kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ TOC elem contains TD kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ TOC elem contains THead kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ TOC elem contains TBody kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ TOC elem contains TFoot kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ TOC elem contains Caption kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ TOC elem contains Figure kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ TOC elem contains Formula kid
+
+
+
+
+
+
+
+
+ TOC elem should not contain content item kid
+ hasContentItems == false
+
+ TOC elem contains content item kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ TOCI elem contains Document kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ TOCI elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ TOCI elem contains Part kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ TOCI elem contains Art kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ TOCI elem contains Sect kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ TOCI elem contains TOCI kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ TOCI elem contains Aside kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ TOCI elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ TOCI elem contains Note kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ TOCI elem contains Code kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ TOCI elem contains Hn kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ TOCI elem contains H kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ TOCI elem contains Title kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ TOCI elem contains Sub kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ TOCI elem contains Em kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ TOCI elem contains Strong kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ TOCI elem contains Span kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ TOCI elem contains Quote kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ TOCI elem contains Link kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ TOCI elem contains Annot kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ TOCI elem contains Form kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ TOCI elem contains Ruby kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ TOCI elem contains RB kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ TOCI elem contains RT kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ TOCI elem contains RP kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ TOCI elem contains Warichu kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ TOCI elem contains WT kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ TOCI elem contains WP kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain FENote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0
+
+ TOCI elem contains FENote kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ TOCI elem contains Index kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ TOCI elem contains L kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ TOCI elem contains LI kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ TOCI elem contains LBody kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ TOCI elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ TOCI elem contains Table kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ TOCI elem contains TR kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ TOCI elem contains TH kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ TOCI elem contains TD kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ TOCI elem contains THead kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ TOCI elem contains TBody kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ TOCI elem contains TFoot kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ TOCI elem contains Caption kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ TOCI elem contains Figure kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ TOCI elem contains Formula kid
+
+
+
+
+
+
+
+
+ TOCI elem should not contain content item kid
+ hasContentItems == false
+
+ TOCI elem contains content item kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Aside elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ Aside elem contains Aside kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Aside elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Aside elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ Aside contains more than one H kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Aside elem contains Title kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ Aside elem contains Sub kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ Aside elem contains Em kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ Aside elem contains Strong kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Aside elem contains Span kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Aside elem contains Quote kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Aside elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Aside elem contains RB kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Aside elem contains RT kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Aside elem contains RP kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Aside elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Aside elem contains WT kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Aside elem contains WP kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Aside elem contains LI kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Aside elem contains LBody kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ Aside elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Aside elem contains TR kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Aside elem contains TH kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Aside elem contains TD kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Aside elem contains THead kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Aside elem contains TBody kid
+
+
+
+
+
+
+
+
+ Aside elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Aside elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Aside elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ Aside contains more than one Caption kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ BlockQuote elem contains TOCI kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ BlockQuote elem contains Aside kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ BlockQuote elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ BlockQuote contains more than one H kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ BlockQuote elem contains Title kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ BlockQuote elem contains Sub kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ BlockQuote elem contains Em kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ BlockQuote elem contains Strong kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ BlockQuote elem contains Span kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ BlockQuote elem contains Quote kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ BlockQuote elem contains Ruby kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ BlockQuote elem contains RB kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ BlockQuote elem contains RT kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ BlockQuote elem contains RP kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ BlockQuote elem contains Warichu kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ BlockQuote elem contains WT kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ BlockQuote elem contains WP kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ BlockQuote elem contains LI kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ BlockQuote elem contains LBody kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ BlockQuote elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ BlockQuote elem contains TR kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ BlockQuote elem contains TH kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ BlockQuote elem contains TD kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ BlockQuote elem contains THead kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ BlockQuote elem contains TBody kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ BlockQuote elem contains TFoot kid
+
+
+
+
+
+
+
+
+ BlockQuote elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ BlockQuote contains more than one Caption kid
+
+
+
+
+
+
+
+
+ Private elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ Private contains more than one H kid
+
+
+
+
+
+
+
+
+ Private elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ Private contains more than one Caption kid
+
+
+
+
+
+
+
+
+ Title elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Title elem contains Document kid
+
+
+
+
+
+
+
+
+ Title elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ Title elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ Title elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Title elem contains Art kid
+
+
+
+
+
+
+
+
+ Title elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Title elem contains Sect kid
+
+
+
+
+
+
+
+
+ Title elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Title elem contains TOC kid
+
+
+
+
+
+
+
+
+ Title elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Title elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Title elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ Title elem contains Hn kid
+
+
+
+
+
+
+
+
+ Title elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Title elem contains H kid
+
+
+
+
+
+
+
+
+ Title elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Title elem contains Title kid
+
+
+
+
+
+
+
+
+ Title elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ Title elem contains Sub kid
+
+
+
+
+
+
+
+
+ Title elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Title elem contains RB kid
+
+
+
+
+
+
+
+
+ Title elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Title elem contains RT kid
+
+
+
+
+
+
+
+
+ Title elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Title elem contains RP kid
+
+
+
+
+
+
+
+
+ Title elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Title elem contains WT kid
+
+
+
+
+
+
+
+
+ Title elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Title elem contains WP kid
+
+
+
+
+
+
+
+
+ Title elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Title elem contains Index kid
+
+
+
+
+
+
+
+
+ Title elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Title elem contains LI kid
+
+
+
+
+
+
+
+
+ Title elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Title elem contains LBody kid
+
+
+
+
+
+
+
+
+ Title elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Title elem contains TR kid
+
+
+
+
+
+
+
+
+ Title elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Title elem contains TH kid
+
+
+
+
+
+
+
+
+ Title elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Title elem contains TD kid
+
+
+
+
+
+
+
+
+ Title elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Title elem contains THead kid
+
+
+
+
+
+
+
+
+ Title elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Title elem contains TBody kid
+
+
+
+
+
+
+
+
+ Title elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Title elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Title elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ Title contains more than one Caption kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Sub elem contains Document kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ Sub elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ Sub elem contains Part kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Sub elem contains Art kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ Sub elem contains Div kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Sub elem contains Sect kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Sub elem contains TOC kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Sub elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ Sub elem contains Aside kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Sub elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Sub elem contains P kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ Sub elem contains Hn kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Sub elem contains H kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Sub elem contains Title kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ Sub elem contains Sub kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Sub elem contains RB kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Sub elem contains RT kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Sub elem contains RP kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Sub elem contains WT kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Sub elem contains WP kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Sub elem contains Index kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Sub elem contains LI kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Sub elem contains LBody kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Sub elem contains Table kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Sub elem contains TR kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Sub elem contains TH kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Sub elem contains TD kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Sub elem contains THead kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Sub elem contains TBody kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Sub elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Sub elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Sub elem contains Caption kid
+
+
+
+
+
+
+
+
+ P elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ P elem contains Document kid
+
+
+
+
+
+
+
+
+ P elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ P elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ P elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ P elem contains Part kid
+
+
+
+
+
+
+
+
+ P elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ P elem contains Art kid
+
+
+
+
+
+
+
+
+ P elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ P elem contains Div kid
+
+
+
+
+
+
+
+
+ P elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ P elem contains Sect kid
+
+
+
+
+
+
+
+
+ P elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ P elem contains TOC kid
+
+
+
+
+
+
+
+
+ P elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ P elem contains TOCI kid
+
+
+
+
+
+
+
+
+ P elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ P elem contains Aside kid
+
+
+
+
+
+
+
+
+ P elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ P elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ P elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ P elem contains P kid
+
+
+
+
+
+
+
+
+ P elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ P elem contains Hn kid
+
+
+
+
+
+
+
+
+ P elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ P elem contains H kid
+
+
+
+
+
+
+
+
+ P elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ P elem contains Title kid
+
+
+
+
+
+
+
+
+ P elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ P elem contains RB kid
+
+
+
+
+
+
+
+
+ P elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ P elem contains RT kid
+
+
+
+
+
+
+
+
+ P elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ P elem contains RP kid
+
+
+
+
+
+
+
+
+ P elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ P elem contains WT kid
+
+
+
+
+
+
+
+
+ P elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ P elem contains WP kid
+
+
+
+
+
+
+
+
+ P elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ P elem contains Index kid
+
+
+
+
+
+
+
+
+ P elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ P elem contains LI kid
+
+
+
+
+
+
+
+
+ P elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ P elem contains LBody kid
+
+
+
+
+
+
+
+
+ P elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ P elem contains Table kid
+
+
+
+
+
+
+
+
+ P elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ P elem contains TR kid
+
+
+
+
+
+
+
+
+ P elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ P elem contains TH kid
+
+
+
+
+
+
+
+
+ P elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ P elem contains TD kid
+
+
+
+
+
+
+
+
+ P elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ P elem contains THead kid
+
+
+
+
+
+
+
+
+ P elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ P elem contains TBody kid
+
+
+
+
+
+
+
+
+ P elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ P elem contains TFoot kid
+
+
+
+
+
+
+
+
+ P elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ P elem contains Caption kid
+
+
+
+
+
+
+
+
+ Note elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Note elem contains Document kid
+
+
+
+
+
+
+
+
+ Note elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Note elem contains TOC kid
+
+
+
+
+
+
+
+
+ Note elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Note elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Note elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ Note elem contains Hn kid
+
+
+
+
+
+
+
+
+ Note elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Note elem contains H kid
+
+
+
+
+
+
+
+
+ Note elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Note elem contains Title kid
+
+
+
+
+
+
+
+
+ Note elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Note elem contains RB kid
+
+
+
+
+
+
+
+
+ Note elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Note elem contains RT kid
+
+
+
+
+
+
+
+
+ Note elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Note elem contains RP kid
+
+
+
+
+
+
+
+
+ Note elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Note elem contains WT kid
+
+
+
+
+
+
+
+
+ Note elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Note elem contains WP kid
+
+
+
+
+
+
+
+
+ Note elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Note elem contains LI kid
+
+
+
+
+
+
+
+
+ Note elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Note elem contains LBody kid
+
+
+
+
+
+
+
+
+ Note elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Note elem contains TR kid
+
+
+
+
+
+
+
+
+ Note elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Note elem contains TH kid
+
+
+
+
+
+
+
+
+ Note elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Note elem contains TD kid
+
+
+
+
+
+
+
+
+ Note elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Note elem contains THead kid
+
+
+
+
+
+
+
+
+ Note elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Note elem contains TBody kid
+
+
+
+
+
+
+
+
+ Note elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Note elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Code elem contains Document kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Code elem contains Art kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Code elem contains Sect kid
+
+
+
+
+
+
+
+
+ Code elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Code elem contains TOC kid
+
+
+
+
+
+
+
+
+ Code elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Code elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ Code elem contains Aside kid
+
+
+
+
+
+
+
+
+ Code elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Code elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Code elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Code elem contains P kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ Code elem contains Code kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ Code elem contains Hn kid
+
+
+
+
+
+
+
+
+ Code elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Code elem contains H kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Code elem contains Title kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ Code elem contains Sub kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ Code elem contains Lbl kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Code elem contains Quote kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ Code elem contains Form kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Code elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Code elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Code elem contains RB kid
+
+
+
+
+
+
+
+
+ Code elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Code elem contains RT kid
+
+
+
+
+
+
+
+
+ Code elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Code elem contains RP kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Code elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Code elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Code elem contains WT kid
+
+
+
+
+
+
+
+
+ Code elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Code elem contains WP kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Code elem contains Index kid
+
+
+
+
+
+
+
+
+ Code elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ Code elem contains L kid
+
+
+
+
+
+
+
+
+ Code elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Code elem contains LI kid
+
+
+
+
+
+
+
+
+ Code elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Code elem contains LBody kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Code elem contains Table kid
+
+
+
+
+
+
+
+
+ Code elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Code elem contains TR kid
+
+
+
+
+
+
+
+
+ Code elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Code elem contains TH kid
+
+
+
+
+
+
+
+
+ Code elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Code elem contains TD kid
+
+
+
+
+
+
+
+
+ Code elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Code elem contains THead kid
+
+
+
+
+
+
+
+
+ Code elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Code elem contains TBody kid
+
+
+
+
+
+
+
+
+ Code elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Code elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Code elem contains Caption kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ Code elem contains Figure kid
+
+
+
+
+
+
+
+
+ Code elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ Code elem contains Formula kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain Document kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0)
+
+ Hn elem contains Document kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain DocumentFragment kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0)
+
+ Hn elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain Part kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0)
+
+ Hn elem contains Part kid
+
+
+
+
+
+
+
+
+ Hn elem should contain zero or one Art kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1)
+
+ Hn contains more than one Art kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain Div kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0)
+
+ Hn elem contains Div kid
+
+
+
+
+
+
+
+
+ Hn elem should contain zero or one Sect kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1)
+
+ Hn contains more than one Sect kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain TOC kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0)
+
+ Hn elem contains TOC kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain TOCI kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0)
+
+ Hn elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain Aside kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0)
+
+ Hn elem contains Aside kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain BlockQuote kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0)
+
+ Hn elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain P kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0)
+
+ Hn elem contains P kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain Hn kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0)
+
+ Hn elem contains Hn kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain H kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0)
+
+ Hn elem contains H kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain Title kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0)
+
+ Hn elem contains Title kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain RB kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0)
+
+ Hn elem contains RB kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain RT kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0)
+
+ Hn elem contains RT kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain RP kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0)
+
+ Hn elem contains RP kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain WT kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0)
+
+ Hn elem contains WT kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain WP kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0)
+
+ Hn elem contains WP kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain Index kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0)
+
+ Hn elem contains Index kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain L kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0)
+
+ Hn elem contains L kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain LI kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0)
+
+ Hn elem contains LI kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain LBody kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0)
+
+ Hn elem contains LBody kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain Table kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0)
+
+ Hn elem contains Table kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain TR kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0)
+
+ Hn elem contains TR kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain TH kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0)
+
+ Hn elem contains TH kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain TD kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0)
+
+ Hn elem contains TD kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain THead kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0)
+
+ Hn elem contains THead kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain TBody kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0)
+
+ Hn elem contains TBody kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain TFoot kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0)
+
+ Hn elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Hn elem should not contain Caption kid
+ (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0)
+
+ Hn elem contains Caption kid
+
+
+
+
+
+
+
+
+ H elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ H elem contains Document kid
+
+
+
+
+
+
+
+
+ H elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ H elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ H elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ H elem contains Part kid
+
+
+
+
+
+
+
+
+ H elem should contain zero or one Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1
+
+ H contains more than one Art kid
+
+
+
+
+
+
+
+
+ H elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ H elem contains Div kid
+
+
+
+
+
+
+
+
+ H elem should contain zero or one Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1
+
+ H contains more than one Sect kid
+
+
+
+
+
+
+
+
+ H elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ H elem contains TOC kid
+
+
+
+
+
+
+
+
+ H elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ H elem contains TOCI kid
+
+
+
+
+
+
+
+
+ H elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ H elem contains Aside kid
+
+
+
+
+
+
+
+
+ H elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ H elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ H elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ H elem contains P kid
+
+
+
+
+
+
+
+
+ H elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ H elem contains Hn kid
+
+
+
+
+
+
+
+
+ H elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ H elem contains H kid
+
+
+
+
+
+
+
+
+ H elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ H elem contains Title kid
+
+
+
+
+
+
+
+
+ H elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ H elem contains RB kid
+
+
+
+
+
+
+
+
+ H elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ H elem contains RT kid
+
+
+
+
+
+
+
+
+ H elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ H elem contains RP kid
+
+
+
+
+
+
+
+
+ H elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ H elem contains WT kid
+
+
+
+
+
+
+
+
+ H elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ H elem contains WP kid
+
+
+
+
+
+
+
+
+ H elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ H elem contains Index kid
+
+
+
+
+
+
+
+
+ H elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ H elem contains L kid
+
+
+
+
+
+
+
+
+ H elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ H elem contains LI kid
+
+
+
+
+
+
+
+
+ H elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ H elem contains LBody kid
+
+
+
+
+
+
+
+
+ H elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ H elem contains Table kid
+
+
+
+
+
+
+
+
+ H elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ H elem contains TR kid
+
+
+
+
+
+
+
+
+ H elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ H elem contains TH kid
+
+
+
+
+
+
+
+
+ H elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ H elem contains TD kid
+
+
+
+
+
+
+
+
+ H elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ H elem contains THead kid
+
+
+
+
+
+
+
+
+ H elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ H elem contains TBody kid
+
+
+
+
+
+
+
+
+ H elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ H elem contains TFoot kid
+
+
+
+
+
+
+
+
+ H elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ H elem contains Caption kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Lbl elem contains Document kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ Lbl elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ Lbl elem contains Part kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Lbl elem contains Art kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ Lbl elem contains Div kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Lbl elem contains Sect kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Lbl elem contains TOC kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Lbl elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ Lbl elem contains Aside kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Lbl elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Lbl elem contains P kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ Lbl elem contains Hn kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Lbl elem contains H kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Lbl elem contains Title kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ Lbl elem contains Lbl kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Lbl elem contains RB kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Lbl elem contains RT kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Lbl elem contains RP kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Lbl elem contains WT kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Lbl elem contains WP kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Lbl elem contains Index kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ Lbl elem contains L kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Lbl elem contains LI kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Lbl elem contains LBody kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Lbl elem contains Table kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Lbl elem contains TR kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Lbl elem contains TH kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Lbl elem contains TD kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Lbl elem contains THead kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Lbl elem contains TBody kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Lbl elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Lbl elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Lbl elem contains Caption kid
+
+
+
+
+
+
+
+
+ Em elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Em elem contains Document kid
+
+
+
+
+
+
+
+
+ Em elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ Em elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ Em elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ Em elem contains Part kid
+
+
+
+
+
+
+
+
+ Em elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Em elem contains Art kid
+
+
+
+
+
+
+
+
+ Em elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ Em elem contains Div kid
+
+
+
+
+
+
+
+
+ Em elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Em elem contains Sect kid
+
+
+
+
+
+
+
+
+ Em elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Em elem contains TOC kid
+
+
+
+
+
+
+
+
+ Em elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Em elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Em elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ Em elem contains Aside kid
+
+
+
+
+
+
+
+
+ Em elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Em elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Em elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Em elem contains P kid
+
+
+
+
+
+
+
+
+ Em elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ Em elem contains Hn kid
+
+
+
+
+
+
+
+
+ Em elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Em elem contains H kid
+
+
+
+
+
+
+
+
+ Em elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Em elem contains Title kid
+
+
+
+
+
+
+
+
+ Em elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Em elem contains RB kid
+
+
+
+
+
+
+
+
+ Em elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Em elem contains RT kid
+
+
+
+
+
+
+
+
+ Em elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Em elem contains RP kid
+
+
+
+
+
+
+
+
+ Em elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Em elem contains WT kid
+
+
+
+
+
+
+
+
+ Em elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Em elem contains WP kid
+
+
+
+
+
+
+
+
+ Em elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Em elem contains Index kid
+
+
+
+
+
+
+
+
+ Em elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ Em elem contains L kid
+
+
+
+
+
+
+
+
+ Em elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Em elem contains LI kid
+
+
+
+
+
+
+
+
+ Em elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Em elem contains LBody kid
+
+
+
+
+
+
+
+
+ Em elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Em elem contains Table kid
+
+
+
+
+
+
+
+
+ Em elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Em elem contains TR kid
+
+
+
+
+
+
+
+
+ Em elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Em elem contains TH kid
+
+
+
+
+
+
+
+
+ Em elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Em elem contains TD kid
+
+
+
+
+
+
+
+
+ Em elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Em elem contains THead kid
+
+
+
+
+
+
+
+
+ Em elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Em elem contains TBody kid
+
+
+
+
+
+
+
+
+ Em elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Em elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Em elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Em elem contains Caption kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Strong elem contains Document kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ Strong elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ Strong elem contains Part kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Strong elem contains Art kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ Strong elem contains Div kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Strong elem contains Sect kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Strong elem contains TOC kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Strong elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ Strong elem contains Aside kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Strong elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Strong elem contains P kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ Strong elem contains Hn kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Strong elem contains H kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Strong elem contains Title kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Strong elem contains RB kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Strong elem contains RT kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Strong elem contains RP kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Strong elem contains WT kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Strong elem contains WP kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Strong elem contains Index kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ Strong elem contains L kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Strong elem contains LI kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Strong elem contains LBody kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Strong elem contains Table kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Strong elem contains TR kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Strong elem contains TH kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Strong elem contains TD kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Strong elem contains THead kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Strong elem contains TBody kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Strong elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Strong elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Strong elem contains Caption kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Span elem contains Document kid
+
+
+
+
+
+
+
+
+ Span elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ Span elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ Span elem contains Part kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Span elem contains Art kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ Span elem contains Div kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Span elem contains Sect kid
+
+
+
+
+
+
+
+
+ Span elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Span elem contains TOC kid
+
+
+
+
+
+
+
+
+ Span elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Span elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ Span elem contains Aside kid
+
+
+
+
+
+
+
+
+ Span elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Span elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Span elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Span elem contains P kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ Span elem contains Hn kid
+
+
+
+
+
+
+
+
+ Span elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Span elem contains H kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Span elem contains Title kid
+
+
+
+
+
+
+
+
+ Span elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Span elem contains RB kid
+
+
+
+
+
+
+
+
+ Span elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Span elem contains RT kid
+
+
+
+
+
+
+
+
+ Span elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Span elem contains RP kid
+
+
+
+
+
+
+
+
+ Span elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Span elem contains WT kid
+
+
+
+
+
+
+
+
+ Span elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Span elem contains WP kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Span elem contains Index kid
+
+
+
+
+
+
+
+
+ Span elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ Span elem contains L kid
+
+
+
+
+
+
+
+
+ Span elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Span elem contains LI kid
+
+
+
+
+
+
+
+
+ Span elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Span elem contains LBody kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Span elem contains Table kid
+
+
+
+
+
+
+
+
+ Span elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Span elem contains TR kid
+
+
+
+
+
+
+
+
+ Span elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Span elem contains TH kid
+
+
+
+
+
+
+
+
+ Span elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Span elem contains TD kid
+
+
+
+
+
+
+
+
+ Span elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Span elem contains THead kid
+
+
+
+
+
+
+
+
+ Span elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Span elem contains TBody kid
+
+
+
+
+
+
+
+
+ Span elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Span elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Span elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Span elem contains Caption kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Quote elem contains Document kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ Quote elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ Quote elem contains Part kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Quote elem contains Art kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ Quote elem contains Div kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Quote elem contains Sect kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Quote elem contains TOC kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Quote elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ Quote elem contains Aside kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Quote elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Quote elem contains P kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ Quote elem contains Hn kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Quote elem contains H kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Quote elem contains Title kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Quote elem contains RB kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Quote elem contains RT kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Quote elem contains RP kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Quote elem contains WT kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Quote elem contains WP kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Quote elem contains Index kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ Quote elem contains L kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Quote elem contains LI kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Quote elem contains LBody kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Quote elem contains Table kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Quote elem contains TR kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Quote elem contains TH kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Quote elem contains TD kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Quote elem contains THead kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Quote elem contains TBody kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Quote elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Quote elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Quote elem contains Caption kid
+
+
+
+
+
+
+
+
+ Link elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Link elem contains Document kid
+
+
+
+
+
+
+
+
+ Link elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Link elem contains TOC kid
+
+
+
+
+
+
+
+
+ Link elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Link elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Link elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ Link elem contains Link kid
+
+
+
+
+
+
+
+
+ Link elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Link elem contains RB kid
+
+
+
+
+
+
+
+
+ Link elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Link elem contains RT kid
+
+
+
+
+
+
+
+
+ Link elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Link elem contains RP kid
+
+
+
+
+
+
+
+
+ Link elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Link elem contains WT kid
+
+
+
+
+
+
+
+
+ Link elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Link elem contains WP kid
+
+
+
+
+
+
+
+
+ Link elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Link elem contains Index kid
+
+
+
+
+
+
+
+
+ Link elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Link elem contains LI kid
+
+
+
+
+
+
+
+
+ Link elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Link elem contains LBody kid
+
+
+
+
+
+
+
+
+ Link elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Link elem contains TR kid
+
+
+
+
+
+
+
+
+ Link elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Link elem contains TH kid
+
+
+
+
+
+
+
+
+ Link elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Link elem contains TD kid
+
+
+
+
+
+
+
+
+ Link elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Link elem contains THead kid
+
+
+
+
+
+
+
+
+ Link elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Link elem contains TBody kid
+
+
+
+
+
+
+
+
+ Link elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Link elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Reference elem contains Document kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ Reference elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ Reference elem contains Part kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Reference elem contains Art kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ Reference elem contains Div kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Reference elem contains Sect kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Reference elem contains TOC kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Reference elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ Reference elem contains Aside kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Reference elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Reference elem contains P kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ Reference elem contains Code kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ Reference elem contains Hn kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Reference elem contains H kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Reference elem contains Title kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ Reference elem contains Sub kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Reference elem contains Quote kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ Reference elem contains Reference kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ Reference elem contains Form kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Reference elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Reference elem contains RB kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Reference elem contains RT kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Reference elem contains RP kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Reference elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Reference elem contains WT kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Reference elem contains WP kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Reference elem contains Index kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ Reference elem contains L kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Reference elem contains LI kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Reference elem contains LBody kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Reference elem contains Table kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Reference elem contains TR kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Reference elem contains TH kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Reference elem contains TD kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Reference elem contains THead kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Reference elem contains TBody kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Reference elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Reference elem contains Caption kid
+
+
+
+
+
+
+
+
+ Reference elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ Reference elem contains Formula kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Annot elem contains Document kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Annot elem contains TOC kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Annot elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain Private kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Private').length == 0
+
+ Annot elem contains Private kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Annot elem contains RB kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Annot elem contains RT kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Annot elem contains RP kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Annot elem contains WT kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Annot elem contains WP kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Annot elem contains Index kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Annot elem contains LI kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Annot elem contains LBody kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Annot elem contains TR kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Annot elem contains TH kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Annot elem contains TD kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Annot elem contains THead kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Annot elem contains TBody kid
+
+
+
+
+
+
+
+
+ Annot elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Annot elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Form elem contains Document kid
+
+
+
+
+
+
+
+
+ Form elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ Form elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Form elem contains Art kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Form elem contains Sect kid
+
+
+
+
+
+
+
+
+ Form elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Form elem contains TOC kid
+
+
+
+
+
+
+
+
+ Form elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Form elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ Form elem contains Aside kid
+
+
+
+
+
+
+
+
+ Form elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Form elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Form elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Form elem contains P kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ Form elem contains Hn kid
+
+
+
+
+
+
+
+
+ Form elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Form elem contains H kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Form elem contains Title kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ Form elem contains Sub kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ Form elem contains Em kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ Form elem contains Strong kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Form elem contains Span kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Form elem contains Quote kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ Form elem contains Link kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ Form elem contains Annot kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ Form elem contains Form kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Form elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Form elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Form elem contains RB kid
+
+
+
+
+
+
+
+
+ Form elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Form elem contains RT kid
+
+
+
+
+
+
+
+
+ Form elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Form elem contains RP kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Form elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Form elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Form elem contains WT kid
+
+
+
+
+
+
+
+
+ Form elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Form elem contains WP kid
+
+
+
+
+
+
+
+
+ Form elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Form elem contains Index kid
+
+
+
+
+
+
+
+
+ Form elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Form elem contains LI kid
+
+
+
+
+
+
+
+
+ Form elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Form elem contains LBody kid
+
+
+
+
+
+
+
+
+ Form elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Form elem contains TR kid
+
+
+
+
+
+
+
+
+ Form elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Form elem contains TH kid
+
+
+
+
+
+
+
+
+ Form elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Form elem contains TD kid
+
+
+
+
+
+
+
+
+ Form elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Form elem contains THead kid
+
+
+
+
+
+
+
+
+ Form elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Form elem contains TBody kid
+
+
+
+
+
+
+
+
+ Form elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Form elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Form elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ Form contains more than one Caption kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Ruby elem contains Document kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ Ruby elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ Ruby elem contains Part kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Ruby elem contains Art kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ Ruby elem contains Div kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Ruby elem contains Sect kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Ruby elem contains TOC kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Ruby elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ Ruby elem contains Aside kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Ruby elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Ruby elem contains P kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ Ruby elem contains Note kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ Ruby elem contains Code kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ Ruby elem contains Hn kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Ruby elem contains H kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Ruby elem contains Title kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ Ruby elem contains Sub kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ Ruby elem contains Lbl kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ Ruby elem contains Em kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ Ruby elem contains Strong kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Ruby elem contains Span kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Ruby elem contains Quote kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ Ruby elem contains Link kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ Ruby elem contains Reference kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ Ruby elem contains Annot kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ Ruby elem contains Form kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Ruby elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Ruby elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Ruby elem contains WT kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Ruby elem contains WP kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain FENote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0
+
+ Ruby elem contains FENote kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Ruby elem contains Index kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ Ruby elem contains L kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Ruby elem contains LI kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Ruby elem contains LBody kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ Ruby elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Ruby elem contains Table kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Ruby elem contains TR kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Ruby elem contains TH kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Ruby elem contains TD kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Ruby elem contains THead kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Ruby elem contains TBody kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Ruby elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Ruby elem contains Caption kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ Ruby elem contains Figure kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ Ruby elem contains Formula kid
+
+
+
+
+
+
+
+
+ Ruby elem should not contain Artifact kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0
+
+ Ruby elem contains Artifact kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ RB elem contains Document kid
+
+
+
+
+
+
+
+
+ RB elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ RB elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ RB elem contains Part kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ RB elem contains Art kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ RB elem contains Div kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ RB elem contains Sect kid
+
+
+
+
+
+
+
+
+ RB elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ RB elem contains TOC kid
+
+
+
+
+
+
+
+
+ RB elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ RB elem contains TOCI kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ RB elem contains Aside kid
+
+
+
+
+
+
+
+
+ RB elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ RB elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ RB elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ RB elem contains P kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ RB elem contains Note kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ RB elem contains Code kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ RB elem contains Hn kid
+
+
+
+
+
+
+
+
+ RB elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ RB elem contains H kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ RB elem contains Title kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ RB elem contains Lbl kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ RB elem contains Ruby kid
+
+
+
+
+
+
+
+
+ RB elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ RB elem contains RB kid
+
+
+
+
+
+
+
+
+ RB elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ RB elem contains RT kid
+
+
+
+
+
+
+
+
+ RB elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ RB elem contains RP kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ RB elem contains Warichu kid
+
+
+
+
+
+
+
+
+ RB elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ RB elem contains WT kid
+
+
+
+
+
+
+
+
+ RB elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ RB elem contains WP kid
+
+
+
+
+
+
+
+
+ RB elem should not contain FENote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0
+
+ RB elem contains FENote kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ RB elem contains Index kid
+
+
+
+
+
+
+
+
+ RB elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ RB elem contains L kid
+
+
+
+
+
+
+
+
+ RB elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ RB elem contains LI kid
+
+
+
+
+
+
+
+
+ RB elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ RB elem contains LBody kid
+
+
+
+
+
+
+
+
+ RB elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ RB elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ RB elem contains Table kid
+
+
+
+
+
+
+
+
+ RB elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ RB elem contains TR kid
+
+
+
+
+
+
+
+
+ RB elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ RB elem contains TH kid
+
+
+
+
+
+
+
+
+ RB elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ RB elem contains TD kid
+
+
+
+
+
+
+
+
+ RB elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ RB elem contains THead kid
+
+
+
+
+
+
+
+
+ RB elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ RB elem contains TBody kid
+
+
+
+
+
+
+
+
+ RB elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ RB elem contains TFoot kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ RB elem contains Caption kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ RB elem contains Figure kid
+
+
+
+
+
+
+
+
+ RB elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ RB elem contains Formula kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ RT elem contains Document kid
+
+
+
+
+
+
+
+
+ RT elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ RT elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ RT elem contains Part kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ RT elem contains Art kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ RT elem contains Div kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ RT elem contains Sect kid
+
+
+
+
+
+
+
+
+ RT elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ RT elem contains TOC kid
+
+
+
+
+
+
+
+
+ RT elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ RT elem contains TOCI kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ RT elem contains Aside kid
+
+
+
+
+
+
+
+
+ RT elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ RT elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ RT elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ RT elem contains P kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ RT elem contains Note kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ RT elem contains Code kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ RT elem contains Hn kid
+
+
+
+
+
+
+
+
+ RT elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ RT elem contains H kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ RT elem contains Title kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ RT elem contains Lbl kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ RT elem contains Ruby kid
+
+
+
+
+
+
+
+
+ RT elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ RT elem contains RB kid
+
+
+
+
+
+
+
+
+ RT elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ RT elem contains RT kid
+
+
+
+
+
+
+
+
+ RT elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ RT elem contains RP kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ RT elem contains Warichu kid
+
+
+
+
+
+
+
+
+ RT elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ RT elem contains WT kid
+
+
+
+
+
+
+
+
+ RT elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ RT elem contains WP kid
+
+
+
+
+
+
+
+
+ RT elem should not contain FENote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0
+
+ RT elem contains FENote kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ RT elem contains Index kid
+
+
+
+
+
+
+
+
+ RT elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ RT elem contains L kid
+
+
+
+
+
+
+
+
+ RT elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ RT elem contains LI kid
+
+
+
+
+
+
+
+
+ RT elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ RT elem contains LBody kid
+
+
+
+
+
+
+
+
+ RT elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ RT elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ RT elem contains Table kid
+
+
+
+
+
+
+
+
+ RT elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ RT elem contains TR kid
+
+
+
+
+
+
+
+
+ RT elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ RT elem contains TH kid
+
+
+
+
+
+
+
+
+ RT elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ RT elem contains TD kid
+
+
+
+
+
+
+
+
+ RT elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ RT elem contains THead kid
+
+
+
+
+
+
+
+
+ RT elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ RT elem contains TBody kid
+
+
+
+
+
+
+
+
+ RT elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ RT elem contains TFoot kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ RT elem contains Caption kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ RT elem contains Figure kid
+
+
+
+
+
+
+
+
+ RT elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ RT elem contains Formula kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ RP elem contains Document kid
+
+
+
+
+
+
+
+
+ RP elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ RP elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ RP elem contains Part kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ RP elem contains Art kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ RP elem contains Div kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ RP elem contains Sect kid
+
+
+
+
+
+
+
+
+ RP elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ RP elem contains TOC kid
+
+
+
+
+
+
+
+
+ RP elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ RP elem contains TOCI kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ RP elem contains Aside kid
+
+
+
+
+
+
+
+
+ RP elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ RP elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ RP elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ RP elem contains P kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ RP elem contains Note kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ RP elem contains Code kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ RP elem contains Hn kid
+
+
+
+
+
+
+
+
+ RP elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ RP elem contains H kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ RP elem contains Title kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ RP elem contains Lbl kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ RP elem contains Ruby kid
+
+
+
+
+
+
+
+
+ RP elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ RP elem contains RB kid
+
+
+
+
+
+
+
+
+ RP elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ RP elem contains RT kid
+
+
+
+
+
+
+
+
+ RP elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ RP elem contains RP kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ RP elem contains Warichu kid
+
+
+
+
+
+
+
+
+ RP elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ RP elem contains WT kid
+
+
+
+
+
+
+
+
+ RP elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ RP elem contains WP kid
+
+
+
+
+
+
+
+
+ RP elem should not contain FENote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0
+
+ RP elem contains FENote kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ RP elem contains Index kid
+
+
+
+
+
+
+
+
+ RP elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ RP elem contains L kid
+
+
+
+
+
+
+
+
+ RP elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ RP elem contains LI kid
+
+
+
+
+
+
+
+
+ RP elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ RP elem contains LBody kid
+
+
+
+
+
+
+
+
+ RP elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ RP elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ RP elem contains Table kid
+
+
+
+
+
+
+
+
+ RP elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ RP elem contains TR kid
+
+
+
+
+
+
+
+
+ RP elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ RP elem contains TH kid
+
+
+
+
+
+
+
+
+ RP elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ RP elem contains TD kid
+
+
+
+
+
+
+
+
+ RP elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ RP elem contains THead kid
+
+
+
+
+
+
+
+
+ RP elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ RP elem contains TBody kid
+
+
+
+
+
+
+
+
+ RP elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ RP elem contains TFoot kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ RP elem contains Caption kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ RP elem contains Figure kid
+
+
+
+
+
+
+
+
+ RP elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ RP elem contains Formula kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Warichu elem contains Document kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ Warichu elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ Warichu elem contains Part kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Warichu elem contains Art kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ Warichu elem contains Div kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Warichu elem contains Sect kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Warichu elem contains TOC kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Warichu elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ Warichu elem contains Aside kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Warichu elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Warichu elem contains P kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ Warichu elem contains Note kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ Warichu elem contains Code kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ Warichu elem contains Hn kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Warichu elem contains H kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Warichu elem contains Title kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ Warichu elem contains Sub kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ Warichu elem contains Lbl kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ Warichu elem contains Em kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ Warichu elem contains Strong kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Warichu elem contains Span kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Warichu elem contains Quote kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ Warichu elem contains Link kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ Warichu elem contains Reference kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ Warichu elem contains Annot kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ Warichu elem contains Form kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Warichu elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Warichu elem contains RB kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Warichu elem contains RT kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Warichu elem contains RP kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Warichu elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain FENote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0
+
+ Warichu elem contains FENote kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Warichu elem contains Index kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ Warichu elem contains L kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Warichu elem contains LI kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Warichu elem contains LBody kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ Warichu elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Warichu elem contains Table kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Warichu elem contains TR kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Warichu elem contains TH kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Warichu elem contains TD kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Warichu elem contains THead kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Warichu elem contains TBody kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Warichu elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Warichu elem contains Caption kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ Warichu elem contains Figure kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ Warichu elem contains Formula kid
+
+
+
+
+
+
+
+
+ Warichu elem should not contain Artifact kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0
+
+ Warichu elem contains Artifact kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ WT elem contains Document kid
+
+
+
+
+
+
+
+
+ WT elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ WT elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ WT elem contains Part kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ WT elem contains Art kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ WT elem contains Div kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ WT elem contains Sect kid
+
+
+
+
+
+
+
+
+ WT elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ WT elem contains TOC kid
+
+
+
+
+
+
+
+
+ WT elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ WT elem contains TOCI kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ WT elem contains Aside kid
+
+
+
+
+
+
+
+
+ WT elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ WT elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ WT elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ WT elem contains P kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ WT elem contains Note kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ WT elem contains Code kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ WT elem contains Hn kid
+
+
+
+
+
+
+
+
+ WT elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ WT elem contains H kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ WT elem contains Title kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ WT elem contains Lbl kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ WT elem contains Ruby kid
+
+
+
+
+
+
+
+
+ WT elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ WT elem contains RB kid
+
+
+
+
+
+
+
+
+ WT elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ WT elem contains RT kid
+
+
+
+
+
+
+
+
+ WT elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ WT elem contains RP kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ WT elem contains Warichu kid
+
+
+
+
+
+
+
+
+ WT elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ WT elem contains WT kid
+
+
+
+
+
+
+
+
+ WT elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ WT elem contains WP kid
+
+
+
+
+
+
+
+
+ WT elem should not contain FENote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0
+
+ WT elem contains FENote kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ WT elem contains Index kid
+
+
+
+
+
+
+
+
+ WT elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ WT elem contains L kid
+
+
+
+
+
+
+
+
+ WT elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ WT elem contains LI kid
+
+
+
+
+
+
+
+
+ WT elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ WT elem contains LBody kid
+
+
+
+
+
+
+
+
+ WT elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ WT elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ WT elem contains Table kid
+
+
+
+
+
+
+
+
+ WT elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ WT elem contains TR kid
+
+
+
+
+
+
+
+
+ WT elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ WT elem contains TH kid
+
+
+
+
+
+
+
+
+ WT elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ WT elem contains TD kid
+
+
+
+
+
+
+
+
+ WT elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ WT elem contains THead kid
+
+
+
+
+
+
+
+
+ WT elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ WT elem contains TBody kid
+
+
+
+
+
+
+
+
+ WT elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ WT elem contains TFoot kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ WT elem contains Caption kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ WT elem contains Figure kid
+
+
+
+
+
+
+
+
+ WT elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ WT elem contains Formula kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ WP elem contains Document kid
+
+
+
+
+
+
+
+
+ WP elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ WP elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ WP elem contains Part kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ WP elem contains Art kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ WP elem contains Div kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ WP elem contains Sect kid
+
+
+
+
+
+
+
+
+ WP elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ WP elem contains TOC kid
+
+
+
+
+
+
+
+
+ WP elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ WP elem contains TOCI kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ WP elem contains Aside kid
+
+
+
+
+
+
+
+
+ WP elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ WP elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ WP elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ WP elem contains P kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ WP elem contains Note kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ WP elem contains Code kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ WP elem contains Hn kid
+
+
+
+
+
+
+
+
+ WP elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ WP elem contains H kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ WP elem contains Title kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ WP elem contains Lbl kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ WP elem contains Ruby kid
+
+
+
+
+
+
+
+
+ WP elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ WP elem contains RB kid
+
+
+
+
+
+
+
+
+ WP elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ WP elem contains RT kid
+
+
+
+
+
+
+
+
+ WP elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ WP elem contains RP kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ WP elem contains Warichu kid
+
+
+
+
+
+
+
+
+ WP elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ WP elem contains WT kid
+
+
+
+
+
+
+
+
+ WP elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ WP elem contains WP kid
+
+
+
+
+
+
+
+
+ WP elem should not contain FENote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0
+
+ WP elem contains FENote kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ WP elem contains Index kid
+
+
+
+
+
+
+
+
+ WP elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ WP elem contains L kid
+
+
+
+
+
+
+
+
+ WP elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ WP elem contains LI kid
+
+
+
+
+
+
+
+
+ WP elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ WP elem contains LBody kid
+
+
+
+
+
+
+
+
+ WP elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ WP elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ WP elem contains Table kid
+
+
+
+
+
+
+
+
+ WP elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ WP elem contains TR kid
+
+
+
+
+
+
+
+
+ WP elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ WP elem contains TH kid
+
+
+
+
+
+
+
+
+ WP elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ WP elem contains TD kid
+
+
+
+
+
+
+
+
+ WP elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ WP elem contains THead kid
+
+
+
+
+
+
+
+
+ WP elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ WP elem contains TBody kid
+
+
+
+
+
+
+
+
+ WP elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ WP elem contains TFoot kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ WP elem contains Caption kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ WP elem contains Figure kid
+
+
+
+
+
+
+
+
+ WP elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ WP elem contains Formula kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ FENote elem contains Document kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ FENote elem contains TOC kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ FENote elem contains TOCI kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ FENote elem contains Hn kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ FENote elem contains H kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ FENote elem contains Title kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ FENote elem contains RB kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ FENote elem contains RT kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ FENote elem contains RP kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ FENote elem contains WT kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ FENote elem contains WP kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ FENote elem contains Index kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ FENote elem contains LI kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ FENote elem contains LBody kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ FENote elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ FENote elem contains TR kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ FENote elem contains TH kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ FENote elem contains TD kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ FENote elem contains THead kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ FENote elem contains TBody kid
+
+
+
+
+
+
+
+
+ FENote elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ FENote elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Index elem contains Document kid
+
+
+
+
+
+
+
+
+ Index elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ Index elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Index elem contains Art kid
+
+
+
+
+
+
+
+
+ Index elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Index elem contains TOC kid
+
+
+
+
+
+
+
+
+ Index elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Index elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ Index elem contains Aside kid
+
+
+
+
+
+
+
+
+ Index elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Index elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ Index elem contains Code kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Index elem contains Title kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ Index elem contains Sub kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ Index elem contains Lbl kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ Index elem contains Em kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ Index elem contains Strong kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Index elem contains Span kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Index elem contains Quote kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ Index elem contains Link kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ Index elem contains Form kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Index elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Index elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Index elem contains RB kid
+
+
+
+
+
+
+
+
+ Index elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Index elem contains RT kid
+
+
+
+
+
+
+
+
+ Index elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Index elem contains RP kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Index elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Index elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Index elem contains WT kid
+
+
+
+
+
+
+
+
+ Index elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Index elem contains WP kid
+
+
+
+
+
+
+
+
+ Index elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Index elem contains Index kid
+
+
+
+
+
+
+
+
+ Index elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Index elem contains LI kid
+
+
+
+
+
+
+
+
+ Index elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Index elem contains LBody kid
+
+
+
+
+
+
+
+
+ Index elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ Index elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ Index elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Index elem contains TR kid
+
+
+
+
+
+
+
+
+ Index elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Index elem contains TH kid
+
+
+
+
+
+
+
+
+ Index elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Index elem contains TD kid
+
+
+
+
+
+
+
+
+ Index elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Index elem contains THead kid
+
+
+
+
+
+
+
+
+ Index elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Index elem contains TBody kid
+
+
+
+
+
+
+
+
+ Index elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Index elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Index elem should not contain content item kid
+ hasContentItems == false
+
+ Index elem contains content item kid
+
+
+
+
+
+
+
+
+ L elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ L elem contains Document kid
+
+
+
+
+
+
+
+
+ L elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ L elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ L elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ L elem contains Part kid
+
+
+
+
+
+
+
+
+ L elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ L elem contains Art kid
+
+
+
+
+
+
+
+
+ L elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ L elem contains Div kid
+
+
+
+
+
+
+
+
+ L elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ L elem contains Sect kid
+
+
+
+
+
+
+
+
+ L elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ L elem contains TOC kid
+
+
+
+
+
+
+
+
+ L elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ L elem contains TOCI kid
+
+
+
+
+
+
+
+
+ L elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ L elem contains Aside kid
+
+
+
+
+
+
+
+
+ L elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ L elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ L elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ L elem contains P kid
+
+
+
+
+
+
+
+
+ L elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ L elem contains Note kid
+
+
+
+
+
+
+
+
+ L elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ L elem contains Code kid
+
+
+
+
+
+
+
+
+ L elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ L elem contains Hn kid
+
+
+
+
+
+
+
+
+ L elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ L elem contains H kid
+
+
+
+
+
+
+
+
+ L elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ L elem contains Title kid
+
+
+
+
+
+
+
+
+ L elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ L elem contains Sub kid
+
+
+
+
+
+
+
+
+ L elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ L elem contains Lbl kid
+
+
+
+
+
+
+
+
+ L elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ L elem contains Em kid
+
+
+
+
+
+
+
+
+ L elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ L elem contains Strong kid
+
+
+
+
+
+
+
+
+ L elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ L elem contains Span kid
+
+
+
+
+
+
+
+
+ L elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ L elem contains Quote kid
+
+
+
+
+
+
+
+
+ L elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ L elem contains Link kid
+
+
+
+
+
+
+
+
+ L elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ L elem contains Reference kid
+
+
+
+
+
+
+
+
+ L elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ L elem contains Annot kid
+
+
+
+
+
+
+
+
+ L elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ L elem contains Form kid
+
+
+
+
+
+
+
+
+ L elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ L elem contains Ruby kid
+
+
+
+
+
+
+
+
+ L elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ L elem contains RB kid
+
+
+
+
+
+
+
+
+ L elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ L elem contains RT kid
+
+
+
+
+
+
+
+
+ L elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ L elem contains RP kid
+
+
+
+
+
+
+
+
+ L elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ L elem contains Warichu kid
+
+
+
+
+
+
+
+
+ L elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ L elem contains WT kid
+
+
+
+
+
+
+
+
+ L elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ L elem contains WP kid
+
+
+
+
+
+
+
+
+ L elem should not contain FENote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0
+
+ L elem contains FENote kid
+
+
+
+
+
+
+
+
+ L elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ L elem contains Index kid
+
+
+
+
+
+
+
+
+ L elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ L elem contains LBody kid
+
+
+
+
+
+
+
+
+ L elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ L elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ L elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ L elem contains Table kid
+
+
+
+
+
+
+
+
+ L elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ L elem contains TR kid
+
+
+
+
+
+
+
+
+ L elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ L elem contains TH kid
+
+
+
+
+
+
+
+
+ L elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ L elem contains TD kid
+
+
+
+
+
+
+
+
+ L elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ L elem contains THead kid
+
+
+
+
+
+
+
+
+ L elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ L elem contains TBody kid
+
+
+
+
+
+
+
+
+ L elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ L elem contains TFoot kid
+
+
+
+
+
+
+
+
+ L elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ L contains more than one Caption kid
+
+
+
+
+
+
+
+
+ L elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ L elem contains Figure kid
+
+
+
+
+
+
+
+
+ L elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ L elem contains Formula kid
+
+
+
+
+
+
+
+
+ L elem should not contain content item kid
+ hasContentItems == false
+
+ L elem contains content item kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ LI elem contains Document kid
+
+
+
+
+
+
+
+
+ LI elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ LI elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ LI elem contains Part kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ LI elem contains Art kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ LI elem contains Sect kid
+
+
+
+
+
+
+
+
+ LI elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ LI elem contains TOC kid
+
+
+
+
+
+
+
+
+ LI elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ LI elem contains TOCI kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ LI elem contains Aside kid
+
+
+
+
+
+
+
+
+ LI elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ LI elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ LI elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ LI elem contains P kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ LI elem contains Note kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ LI elem contains Code kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ LI elem contains Hn kid
+
+
+
+
+
+
+
+
+ LI elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ LI elem contains H kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ LI elem contains Title kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ LI elem contains Sub kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ LI elem contains Em kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ LI elem contains Strong kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ LI elem contains Span kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ LI elem contains Quote kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ LI elem contains Link kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ LI elem contains Reference kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ LI elem contains Annot kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ LI elem contains Form kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ LI elem contains Ruby kid
+
+
+
+
+
+
+
+
+ LI elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ LI elem contains RB kid
+
+
+
+
+
+
+
+
+ LI elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ LI elem contains RT kid
+
+
+
+
+
+
+
+
+ LI elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ LI elem contains RP kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ LI elem contains Warichu kid
+
+
+
+
+
+
+
+
+ LI elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ LI elem contains WT kid
+
+
+
+
+
+
+
+
+ LI elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ LI elem contains WP kid
+
+
+
+
+
+
+
+
+ LI elem should not contain FENote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0
+
+ LI elem contains FENote kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ LI elem contains Index kid
+
+
+
+
+
+
+
+
+ LI elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ LI elem contains L kid
+
+
+
+
+
+
+
+
+ LI elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ LI elem contains LI kid
+
+
+
+
+
+
+
+
+ LI elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ LI elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ LI elem contains Table kid
+
+
+
+
+
+
+
+
+ LI elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ LI elem contains TR kid
+
+
+
+
+
+
+
+
+ LI elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ LI elem contains TH kid
+
+
+
+
+
+
+
+
+ LI elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ LI elem contains TD kid
+
+
+
+
+
+
+
+
+ LI elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ LI elem contains THead kid
+
+
+
+
+
+
+
+
+ LI elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ LI elem contains TBody kid
+
+
+
+
+
+
+
+
+ LI elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ LI elem contains TFoot kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ LI elem contains Caption kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ LI elem contains Figure kid
+
+
+
+
+
+
+
+
+ LI elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ LI elem contains Formula kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ LBody elem contains Document kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ LBody elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ LBody elem contains TOC kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ LBody elem contains TOCI kid
+
+
+
+
+
+
+
+
+ LBody elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ LBody contains more than one H kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ LBody elem contains Title kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ LBody elem contains Lbl kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ LBody elem contains RB kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ LBody elem contains RT kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ LBody elem contains RP kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ LBody elem contains WT kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ LBody elem contains WP kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ LBody elem contains LI kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ LBody elem contains LBody kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ LBody elem contains TR kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ LBody elem contains TH kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ LBody elem contains TD kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ LBody elem contains THead kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ LBody elem contains TBody kid
+
+
+
+
+
+
+
+
+ LBody elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ LBody elem contains TFoot kid
+
+
+
+
+
+
+
+
+ LBody elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ LBody contains more than one Caption kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ BibEntry elem contains Document kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ BibEntry elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ BibEntry elem contains Art kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ BibEntry elem contains Sect kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ BibEntry elem contains TOC kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ BibEntry elem contains TOCI kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ BibEntry elem contains Aside kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ BibEntry elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ BibEntry elem contains Code kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ BibEntry elem contains Hn kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ BibEntry elem contains H kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ BibEntry elem contains Title kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ BibEntry elem contains Sub kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ BibEntry elem contains Quote kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ BibEntry elem contains Form kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ BibEntry elem contains Ruby kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ BibEntry elem contains RB kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ BibEntry elem contains RT kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ BibEntry elem contains RP kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ BibEntry elem contains Warichu kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ BibEntry elem contains WT kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ BibEntry elem contains WP kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ BibEntry elem contains Index kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ BibEntry elem contains L kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ BibEntry elem contains LI kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ BibEntry elem contains LBody kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ BibEntry elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ BibEntry elem contains Table kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ BibEntry elem contains TR kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ BibEntry elem contains TH kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ BibEntry elem contains TD kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ BibEntry elem contains THead kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ BibEntry elem contains TBody kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ BibEntry elem contains TFoot kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ BibEntry elem contains Caption kid
+
+
+
+
+
+
+
+
+ BibEntry elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ BibEntry elem contains Formula kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Table elem contains Document kid
+
+
+
+
+
+
+
+
+ Table elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ Table elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ Table elem contains Part kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Table elem contains Art kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ Table elem contains Div kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Table elem contains Sect kid
+
+
+
+
+
+
+
+
+ Table elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Table elem contains TOC kid
+
+
+
+
+
+
+
+
+ Table elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Table elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ Table elem contains Aside kid
+
+
+
+
+
+
+
+
+ Table elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ Table elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ Table elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ Table elem contains P kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ Table elem contains Note kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ Table elem contains Code kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ Table elem contains Hn kid
+
+
+
+
+
+
+
+
+ Table elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ Table elem contains H kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Table elem contains Title kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ Table elem contains Sub kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ Table elem contains Lbl kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ Table elem contains Em kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ Table elem contains Strong kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ Table elem contains Span kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ Table elem contains Quote kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ Table elem contains Link kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ Table elem contains Reference kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ Table elem contains Annot kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ Table elem contains Form kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ Table elem contains Ruby kid
+
+
+
+
+
+
+
+
+ Table elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Table elem contains RB kid
+
+
+
+
+
+
+
+
+ Table elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Table elem contains RT kid
+
+
+
+
+
+
+
+
+ Table elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Table elem contains RP kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ Table elem contains Warichu kid
+
+
+
+
+
+
+
+
+ Table elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Table elem contains WT kid
+
+
+
+
+
+
+
+
+ Table elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Table elem contains WP kid
+
+
+
+
+
+
+
+
+ Table elem should not contain FENote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0
+
+ Table elem contains FENote kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ Table elem contains Index kid
+
+
+
+
+
+
+
+
+ Table elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ Table elem contains L kid
+
+
+
+
+
+
+
+
+ Table elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Table elem contains LI kid
+
+
+
+
+
+
+
+
+ Table elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Table elem contains LBody kid
+
+
+
+
+
+
+
+
+ Table elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ Table elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ Table elem contains Table kid
+
+
+
+
+
+
+
+
+ Table elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Table elem contains TH kid
+
+
+
+
+
+
+
+
+ Table elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Table elem contains TD kid
+
+
+
+
+
+
+
+
+ Table elem should contain zero or one THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1
+
+ Table contains more than one THead kid
+
+
+
+
+
+
+
+
+ Table elem should contain zero or one TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1
+
+ Table contains more than one TFoot kid
+
+
+
+
+
+
+
+
+ Table elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ Table contains more than one Caption kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ Table elem contains Figure kid
+
+
+
+
+
+
+
+
+ Table elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ Table elem contains Formula kid
+
+
+
+
+
+
+
+
+ Table elem should not contain content item kid
+ hasContentItems == false
+
+ Table elem contains content item kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ TR elem contains Document kid
+
+
+
+
+
+
+
+
+ TR elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ TR elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ TR elem contains Part kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ TR elem contains Art kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ TR elem contains Div kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ TR elem contains Sect kid
+
+
+
+
+
+
+
+
+ TR elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ TR elem contains TOC kid
+
+
+
+
+
+
+
+
+ TR elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ TR elem contains TOCI kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ TR elem contains Aside kid
+
+
+
+
+
+
+
+
+ TR elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ TR elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ TR elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ TR elem contains P kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ TR elem contains Note kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ TR elem contains Code kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ TR elem contains Hn kid
+
+
+
+
+
+
+
+
+ TR elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ TR elem contains H kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ TR elem contains Title kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ TR elem contains Sub kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ TR elem contains Lbl kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ TR elem contains Em kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ TR elem contains Strong kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ TR elem contains Span kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ TR elem contains Quote kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ TR elem contains Link kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ TR elem contains Reference kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ TR elem contains Annot kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ TR elem contains Form kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ TR elem contains Ruby kid
+
+
+
+
+
+
+
+
+ TR elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ TR elem contains RB kid
+
+
+
+
+
+
+
+
+ TR elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ TR elem contains RT kid
+
+
+
+
+
+
+
+
+ TR elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ TR elem contains RP kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ TR elem contains Warichu kid
+
+
+
+
+
+
+
+
+ TR elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ TR elem contains WT kid
+
+
+
+
+
+
+
+
+ TR elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ TR elem contains WP kid
+
+
+
+
+
+
+
+
+ TR elem should not contain FENote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0
+
+ TR elem contains FENote kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ TR elem contains Index kid
+
+
+
+
+
+
+
+
+ TR elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ TR elem contains L kid
+
+
+
+
+
+
+
+
+ TR elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ TR elem contains LI kid
+
+
+
+
+
+
+
+
+ TR elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ TR elem contains LBody kid
+
+
+
+
+
+
+
+
+ TR elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ TR elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ TR elem contains Table kid
+
+
+
+
+
+
+
+
+ TR elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ TR elem contains TR kid
+
+
+
+
+
+
+
+
+ TR elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ TR elem contains THead kid
+
+
+
+
+
+
+
+
+ TR elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ TR elem contains TBody kid
+
+
+
+
+
+
+
+
+ TR elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ TR elem contains TFoot kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ TR elem contains Caption kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ TR elem contains Figure kid
+
+
+
+
+
+
+
+
+ TR elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ TR elem contains Formula kid
+
+
+
+
+
+
+
+
+ TR elem should not contain content item kid
+ hasContentItems == false
+
+ TR elem contains content item kid
+
+
+
+
+
+
+
+
+ TH elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ TH elem contains Document kid
+
+
+
+
+
+
+
+
+ TH elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ TH elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ TH elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ TH elem contains Part kid
+
+
+
+
+
+
+
+
+ TH elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ TH elem contains TOC kid
+
+
+
+
+
+
+
+
+ TH elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ TH elem contains TOCI kid
+
+
+
+
+
+
+
+
+ TH elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ TH elem contains Aside kid
+
+
+
+
+
+
+
+
+ TH elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ TH elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ TH elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ TH contains more than one H kid
+
+
+
+
+
+
+
+
+ TH elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ TH elem contains Title kid
+
+
+
+
+
+
+
+
+ TH elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ TH elem contains Sub kid
+
+
+
+
+
+
+
+
+ TH elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ TH elem contains RB kid
+
+
+
+
+
+
+
+
+ TH elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ TH elem contains RT kid
+
+
+
+
+
+
+
+
+ TH elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ TH elem contains RP kid
+
+
+
+
+
+
+
+
+ TH elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ TH elem contains WT kid
+
+
+
+
+
+
+
+
+ TH elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ TH elem contains WP kid
+
+
+
+
+
+
+
+
+ TH elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ TH elem contains LI kid
+
+
+
+
+
+
+
+
+ TH elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ TH elem contains LBody kid
+
+
+
+
+
+
+
+
+ TH elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ TH elem contains TR kid
+
+
+
+
+
+
+
+
+ TH elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ TH elem contains TH kid
+
+
+
+
+
+
+
+
+ TH elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ TH elem contains TD kid
+
+
+
+
+
+
+
+
+ TH elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ TH elem contains THead kid
+
+
+
+
+
+
+
+
+ TH elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ TH elem contains TBody kid
+
+
+
+
+
+
+
+
+ TH elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ TH elem contains TFoot kid
+
+
+
+
+
+
+
+
+ TH elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ TH elem contains Caption kid
+
+
+
+
+
+
+
+
+ TD elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ TD elem contains Document kid
+
+
+
+
+
+
+
+
+ TD elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ TD elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ TD elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ TD elem contains Part kid
+
+
+
+
+
+
+
+
+ TD elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ TD elem contains TOC kid
+
+
+
+
+
+
+
+
+ TD elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ TD elem contains TOCI kid
+
+
+
+
+
+
+
+
+ TD elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ TD elem contains Aside kid
+
+
+
+
+
+
+
+
+ TD elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ TD elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ TD elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ TD contains more than one H kid
+
+
+
+
+
+
+
+
+ TD elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ TD elem contains Title kid
+
+
+
+
+
+
+
+
+ TD elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ TD elem contains Sub kid
+
+
+
+
+
+
+
+
+ TD elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ TD elem contains RB kid
+
+
+
+
+
+
+
+
+ TD elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ TD elem contains RT kid
+
+
+
+
+
+
+
+
+ TD elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ TD elem contains RP kid
+
+
+
+
+
+
+
+
+ TD elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ TD elem contains WT kid
+
+
+
+
+
+
+
+
+ TD elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ TD elem contains WP kid
+
+
+
+
+
+
+
+
+ TD elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ TD elem contains LI kid
+
+
+
+
+
+
+
+
+ TD elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ TD elem contains LBody kid
+
+
+
+
+
+
+
+
+ TD elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ TD elem contains TR kid
+
+
+
+
+
+
+
+
+ TD elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ TD elem contains TH kid
+
+
+
+
+
+
+
+
+ TD elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ TD elem contains TD kid
+
+
+
+
+
+
+
+
+ TD elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ TD elem contains THead kid
+
+
+
+
+
+
+
+
+ TD elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ TD elem contains TBody kid
+
+
+
+
+
+
+
+
+ TD elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ TD elem contains TFoot kid
+
+
+
+
+
+
+
+
+ TD elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ TD elem contains Caption kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ THead elem contains Document kid
+
+
+
+
+
+
+
+
+ THead elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ THead elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ THead elem contains Part kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ THead elem contains Art kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ THead elem contains Div kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ THead elem contains Sect kid
+
+
+
+
+
+
+
+
+ THead elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ THead elem contains TOC kid
+
+
+
+
+
+
+
+
+ THead elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ THead elem contains TOCI kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ THead elem contains Aside kid
+
+
+
+
+
+
+
+
+ THead elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ THead elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ THead elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ THead elem contains P kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ THead elem contains Note kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ THead elem contains Code kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ THead elem contains Hn kid
+
+
+
+
+
+
+
+
+ THead elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ THead elem contains H kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ THead elem contains Title kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ THead elem contains Sub kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ THead elem contains Lbl kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ THead elem contains Em kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ THead elem contains Strong kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ THead elem contains Span kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ THead elem contains Quote kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ THead elem contains Link kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ THead elem contains Reference kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ THead elem contains Annot kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ THead elem contains Form kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ THead elem contains Ruby kid
+
+
+
+
+
+
+
+
+ THead elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ THead elem contains RB kid
+
+
+
+
+
+
+
+
+ THead elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ THead elem contains RT kid
+
+
+
+
+
+
+
+
+ THead elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ THead elem contains RP kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ THead elem contains Warichu kid
+
+
+
+
+
+
+
+
+ THead elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ THead elem contains WT kid
+
+
+
+
+
+
+
+
+ THead elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ THead elem contains WP kid
+
+
+
+
+
+
+
+
+ THead elem should not contain FENote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0
+
+ THead elem contains FENote kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ THead elem contains Index kid
+
+
+
+
+
+
+
+
+ THead elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ THead elem contains L kid
+
+
+
+
+
+
+
+
+ THead elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ THead elem contains LI kid
+
+
+
+
+
+
+
+
+ THead elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ THead elem contains LBody kid
+
+
+
+
+
+
+
+
+ THead elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ THead elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ THead elem contains Table kid
+
+
+
+
+
+
+
+
+ THead elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ THead elem contains TH kid
+
+
+
+
+
+
+
+
+ THead elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ THead elem contains TD kid
+
+
+
+
+
+
+
+
+ THead elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ THead elem contains THead kid
+
+
+
+
+
+
+
+
+ THead elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ THead elem contains TBody kid
+
+
+
+
+
+
+
+
+ THead elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ THead elem contains TFoot kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ THead elem contains Caption kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ THead elem contains Figure kid
+
+
+
+
+
+
+
+
+ THead elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ THead elem contains Formula kid
+
+
+
+
+
+
+
+
+ THead elem should not contain content item kid
+ hasContentItems == false
+
+ THead elem contains content item kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ TBody elem contains Document kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ TBody elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ TBody elem contains Part kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ TBody elem contains Art kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ TBody elem contains Div kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ TBody elem contains Sect kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ TBody elem contains TOC kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ TBody elem contains TOCI kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ TBody elem contains Aside kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ TBody elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ TBody elem contains P kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ TBody elem contains Note kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ TBody elem contains Code kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ TBody elem contains Hn kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ TBody elem contains H kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ TBody elem contains Title kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ TBody elem contains Sub kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ TBody elem contains Lbl kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ TBody elem contains Em kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ TBody elem contains Strong kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ TBody elem contains Span kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ TBody elem contains Quote kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ TBody elem contains Link kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ TBody elem contains Reference kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ TBody elem contains Annot kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ TBody elem contains Form kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ TBody elem contains Ruby kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ TBody elem contains RB kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ TBody elem contains RT kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ TBody elem contains RP kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ TBody elem contains Warichu kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ TBody elem contains WT kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ TBody elem contains WP kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain FENote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0
+
+ TBody elem contains FENote kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ TBody elem contains Index kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ TBody elem contains L kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ TBody elem contains LI kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ TBody elem contains LBody kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ TBody elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ TBody elem contains Table kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ TBody elem contains TH kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ TBody elem contains TD kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ TBody elem contains THead kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ TBody elem contains TBody kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ TBody elem contains TFoot kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ TBody elem contains Caption kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ TBody elem contains Figure kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ TBody elem contains Formula kid
+
+
+
+
+
+
+
+
+ TBody elem should not contain content item kid
+ hasContentItems == false
+
+ TBody elem contains content item kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ TFoot elem contains Document kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ TFoot elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Part kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0
+
+ TFoot elem contains Part kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ TFoot elem contains Art kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Div kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0
+
+ TFoot elem contains Div kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ TFoot elem contains Sect kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ TFoot elem contains TOC kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ TFoot elem contains TOCI kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Aside kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0
+
+ TFoot elem contains Aside kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain BlockQuote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0
+
+ TFoot elem contains BlockQuote kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain P kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0
+
+ TFoot elem contains P kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Note kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0
+
+ TFoot elem contains Note kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Code kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0
+
+ TFoot elem contains Code kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Hn kid
+ kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0
+
+ TFoot elem contains Hn kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0
+
+ TFoot elem contains H kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ TFoot elem contains Title kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Sub kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0
+
+ TFoot elem contains Sub kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Lbl kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0
+
+ TFoot elem contains Lbl kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Em kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0
+
+ TFoot elem contains Em kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Strong kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0
+
+ TFoot elem contains Strong kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Span kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0
+
+ TFoot elem contains Span kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Quote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0
+
+ TFoot elem contains Quote kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Link kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0
+
+ TFoot elem contains Link kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Reference kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0
+
+ TFoot elem contains Reference kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Annot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0
+
+ TFoot elem contains Annot kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Form kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0
+
+ TFoot elem contains Form kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Ruby kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0
+
+ TFoot elem contains Ruby kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ TFoot elem contains RB kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ TFoot elem contains RT kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ TFoot elem contains RP kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Warichu kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0
+
+ TFoot elem contains Warichu kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ TFoot elem contains WT kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ TFoot elem contains WP kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain FENote kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0
+
+ TFoot elem contains FENote kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Index kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0
+
+ TFoot elem contains Index kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain L kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0
+
+ TFoot elem contains L kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ TFoot elem contains LI kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ TFoot elem contains LBody kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain BibEntry kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0
+
+ TFoot elem contains BibEntry kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Table kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0
+
+ TFoot elem contains Table kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ TFoot elem contains TH kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ TFoot elem contains TD kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ TFoot elem contains THead kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ TFoot elem contains TBody kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ TFoot elem contains TFoot kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ TFoot elem contains Caption kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Figure kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0
+
+ TFoot elem contains Figure kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain Formula kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0
+
+ TFoot elem contains Formula kid
+
+
+
+
+
+
+
+
+ TFoot elem should not contain content item kid
+ hasContentItems == false
+
+ TFoot elem contains content item kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Caption elem contains Document kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Caption elem contains TOC kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Caption elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Caption elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ Caption contains more than one H kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Caption elem contains Title kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Caption elem contains RB kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Caption elem contains RT kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Caption elem contains RP kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Caption elem contains WT kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Caption elem contains WP kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Caption elem contains LI kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Caption elem contains LBody kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Caption elem contains TR kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Caption elem contains TH kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Caption elem contains TD kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Caption elem contains THead kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Caption elem contains TBody kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Caption elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Caption elem should not contain Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0
+
+ Caption elem contains Caption kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Figure elem contains Document kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ Figure elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Figure elem contains TOC kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Figure elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Figure elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ Figure contains more than one H kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Figure elem contains Title kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Figure elem contains RB kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Figure elem contains RT kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Figure elem contains RP kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Figure elem contains WT kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Figure elem contains WP kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Figure elem contains LI kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Figure elem contains LBody kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Figure elem contains TR kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Figure elem contains TH kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Figure elem contains TD kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Figure elem contains THead kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Figure elem contains TBody kid
+
+
+
+
+
+
+
+
+ Figure elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Figure elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Figure elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ Figure contains more than one Caption kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain Document kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0
+
+ Formula elem contains Document kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain DocumentFragment kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0
+
+ Formula elem contains DocumentFragment kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain Art kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0
+
+ Formula elem contains Art kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain Sect kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0
+
+ Formula elem contains Sect kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain TOC kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0
+
+ Formula elem contains TOC kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain TOCI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0
+
+ Formula elem contains TOCI kid
+
+
+
+
+
+
+
+
+ Formula elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ Formula contains more than one H kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain Title kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0
+
+ Formula elem contains Title kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain RB kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0
+
+ Formula elem contains RB kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain RT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0
+
+ Formula elem contains RT kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain RP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0
+
+ Formula elem contains RP kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain WT kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0
+
+ Formula elem contains WT kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain WP kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0
+
+ Formula elem contains WP kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain LI kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0
+
+ Formula elem contains LI kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain LBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0
+
+ Formula elem contains LBody kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain TR kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0
+
+ Formula elem contains TR kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain TH kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0
+
+ Formula elem contains TH kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain TD kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0
+
+ Formula elem contains TD kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0
+
+ Formula elem contains THead kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain TBody kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0
+
+ Formula elem contains TBody kid
+
+
+
+
+
+
+
+
+ Formula elem should not contain TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0
+
+ Formula elem contains TFoot kid
+
+
+
+
+
+
+
+
+ Formula elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ Formula contains more than one Caption kid
+
+
+
+
+
+
+
+
+ Artifact elem should contain zero or one H kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ Artifact contains more than one H kid
+
+
+
+
+
+
+
+
+ Artifact elem should contain zero or one Caption kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ Artifact contains more than one Caption kid
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/ISO-32005-Tagged.xml b/PDF_UA/ISO-32005-Tagged.xml
new file mode 100644
index 00000000..6428d424
--- /dev/null
+++ b/PDF_UA/ISO-32005-Tagged.xml
@@ -0,0 +1,19939 @@
+
+
+
+ Tagged PDF profile for ISO 32005 specification
+ Profile for validation of Tagged PDF structure tree relations for PDF 1.7 and PDF 2.0 standard structure types
+
+
+
+
+
+ Every structure type should be mapped to a standard structure type
+ isNotMappedToStandardType == false
+
+ Non-standard structure type %1 is not mapped to a standard type
+
+ valueS
+
+
+
+
+
+
+
+
+ StructTreeRoot shall contain exactly one <Document>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 1
+
+ StructTreeRoot either doesn't contain or contains more than one <Document>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <DocumentFragment>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Part>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Part>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Art>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Art>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Div>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Div>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Sect>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Sect>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <TOC>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <TOC>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <TOCI>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <TOCI>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Aside>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Aside>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <BlockQuote>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <BlockQuote>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <NonStruct>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <NonStruct>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Private>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Private>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <P>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <P>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Note>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Note>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Code>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Code>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Hn>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Hn>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <H>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <H>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Title>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Title>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Sub>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Sub>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Lbl>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Lbl>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Em>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Em>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Strong>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Strong>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Span>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Span>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Quote>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Quote>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Link>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Link>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Reference>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Reference>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Annot>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Annot>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Form>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Form>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Ruby>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Ruby>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <RB>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <RB>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <RT>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <RT>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <RP>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <RP>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Warichu>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Warichu>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <WT>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <WT>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <WP>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <WP>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <FENote>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <FENote>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Index>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Index>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <L>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <L>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <LI>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <LI>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <LBody>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <LBody>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <BibEntry>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <BibEntry>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Table>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Table>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <TR>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <TR>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <TH>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <TH>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <TD>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <TD>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <THead>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <THead>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <TBody>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <TBody>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <TFoot>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <TFoot>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Caption>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Caption>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Figure>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Figure>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Formula>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Formula>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Artifact>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Artifact>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain content items
+ hasContentItems == false
+
+ StructTreeRoot contains content item(s)
+
+
+
+
+
+
+
+
+ <Document> shall not contain <TOCI>
+ parentStandardType != 'Document'
+
+ <Document> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Document> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <Document> contains more than one <H>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Sub>
+ parentStandardType != 'Document'
+
+ <Document> contains <Sub>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Lbl>
+ parentStandardType != 'Document'
+
+ <Document> contains <Lbl>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Em>
+ parentStandardType != 'Document'
+
+ <Document> contains <Em>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Strong>
+ parentStandardType != 'Document'
+
+ <Document> contains <Strong>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Span>
+ parentStandardType != 'Document'
+
+ <Document> contains <Span>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Quote>
+ parentStandardType != 'Document'
+
+ <Document> contains <Quote>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Reference>
+ parentStandardType != 'Document'
+
+ <Document> contains <Reference>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Ruby>
+ parentStandardType != 'Document'
+
+ <Document> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <RB>
+ parentStandardType != 'Document'
+
+ <Document> contains <RB>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <RT>
+ parentStandardType != 'Document'
+
+ <Document> contains <RT>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <RP>
+ parentStandardType != 'Document'
+
+ <Document> contains <RP>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Warichu>
+ parentStandardType != 'Document'
+
+ <Document> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <WT>
+ parentStandardType != 'Document'
+
+ <Document> contains <WT>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <WP>
+ parentStandardType != 'Document'
+
+ <Document> contains <WP>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <LI>
+ parentStandardType != 'Document'
+
+ <Document> contains <LI>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <LBody>
+ parentStandardType != 'Document'
+
+ <Document> contains <LBody>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <BibEntry>
+ parentStandardType != 'Document'
+
+ <Document> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <TR>
+ parentStandardType != 'Document'
+
+ <Document> contains <TR>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <TH>
+ parentStandardType != 'Document'
+
+ <Document> contains <TH>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <TD>
+ parentStandardType != 'Document'
+
+ <Document> contains <TD>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <THead>
+ parentStandardType != 'Document'
+
+ <Document> contains <THead>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <TBody>
+ parentStandardType != 'Document'
+
+ <Document> contains <TBody>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <TFoot>
+ parentStandardType != 'Document'
+
+ <Document> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Caption>
+ parentStandardType != 'Document'
+
+ <Document> contains <Caption>
+
+
+
+
+
+
+
+
+ <Document> shall not contain content items
+ hasContentItems == false
+
+ <Document> contains content item(s)
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <TOCI>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <TOCI>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <DocumentFragment> contains more than one <H>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Sub>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Sub>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Lbl>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Lbl>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Em>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Em>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Strong>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Strong>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Span>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Span>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Quote>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Quote>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Reference>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Reference>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Ruby>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Ruby>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <RB>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <RB>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <RT>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <RT>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <RP>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <RP>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Warichu>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Warichu>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <WT>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <WT>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <WP>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <WP>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <LI>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <LI>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <LBody>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <LBody>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <BibEntry>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <TR>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <TR>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <TH>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <TH>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <TD>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <TD>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <THead>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <THead>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <TBody>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <TBody>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <TFoot>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <TFoot>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Caption>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Caption>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain content items
+ hasContentItems == false
+
+ <DocumentFragment> contains content item(s)
+
+
+
+
+
+
+
+
+ <Part> shall not contain <Em>
+ parentStandardType != 'Part'
+
+ <Part> contains <Em>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <Strong>
+ parentStandardType != 'Part'
+
+ <Part> contains <Strong>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <Span>
+ parentStandardType != 'Part'
+
+ <Part> contains <Span>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <Quote>
+ parentStandardType != 'Part'
+
+ <Part> contains <Quote>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <Ruby>
+ parentStandardType != 'Part'
+
+ <Part> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <RB>
+ parentStandardType != 'Part'
+
+ <Part> contains <RB>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <RT>
+ parentStandardType != 'Part'
+
+ <Part> contains <RT>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <RP>
+ parentStandardType != 'Part'
+
+ <Part> contains <RP>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <Warichu>
+ parentStandardType != 'Part'
+
+ <Part> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <WT>
+ parentStandardType != 'Part'
+
+ <Part> contains <WT>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <WP>
+ parentStandardType != 'Part'
+
+ <Part> contains <WP>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <LI>
+ parentStandardType != 'Part'
+
+ <Part> contains <LI>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <LBody>
+ parentStandardType != 'Part'
+
+ <Part> contains <LBody>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <TR>
+ parentStandardType != 'Part'
+
+ <Part> contains <TR>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <TH>
+ parentStandardType != 'Part'
+
+ <Part> contains <TH>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <TD>
+ parentStandardType != 'Part'
+
+ <Part> contains <TD>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <THead>
+ parentStandardType != 'Part'
+
+ <Part> contains <THead>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <TBody>
+ parentStandardType != 'Part'
+
+ <Part> contains <TBody>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <TFoot>
+ parentStandardType != 'Part'
+
+ <Part> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Part> shall not contain content items
+ hasContentItems == false
+
+ <Part> contains content item(s)
+
+
+
+
+
+
+
+
+ <Div> shall not contain content items
+ hasContentItems == false
+
+ <Div> contains content item(s)
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Document>
+ parentStandardType != 'Art'
+
+ <Art> contains <Document>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Art>
+ parentStandardType != 'Art'
+
+ <Art> contains <Art>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <TOCI>
+ parentStandardType != 'Art'
+
+ <Art> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Art> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <Art> contains more than one <H>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Sub>
+ parentStandardType != 'Art'
+
+ <Art> contains <Sub>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Em>
+ parentStandardType != 'Art'
+
+ <Art> contains <Em>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Strong>
+ parentStandardType != 'Art'
+
+ <Art> contains <Strong>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Span>
+ parentStandardType != 'Art'
+
+ <Art> contains <Span>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Quote>
+ parentStandardType != 'Art'
+
+ <Art> contains <Quote>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Reference>
+ parentStandardType != 'Art'
+
+ <Art> contains <Reference>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Ruby>
+ parentStandardType != 'Art'
+
+ <Art> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <RB>
+ parentStandardType != 'Art'
+
+ <Art> contains <RB>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <RT>
+ parentStandardType != 'Art'
+
+ <Art> contains <RT>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <RP>
+ parentStandardType != 'Art'
+
+ <Art> contains <RP>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Warichu>
+ parentStandardType != 'Art'
+
+ <Art> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <WT>
+ parentStandardType != 'Art'
+
+ <Art> contains <WT>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <WP>
+ parentStandardType != 'Art'
+
+ <Art> contains <WP>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <LI>
+ parentStandardType != 'Art'
+
+ <Art> contains <LI>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <LBody>
+ parentStandardType != 'Art'
+
+ <Art> contains <LBody>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <BibEntry>
+ parentStandardType != 'Art'
+
+ <Art> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <TR>
+ parentStandardType != 'Art'
+
+ <Art> contains <TR>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <TH>
+ parentStandardType != 'Art'
+
+ <Art> contains <TH>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <TD>
+ parentStandardType != 'Art'
+
+ <Art> contains <TD>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <THead>
+ parentStandardType != 'Art'
+
+ <Art> contains <THead>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <TBody>
+ parentStandardType != 'Art'
+
+ <Art> contains <TBody>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <TFoot>
+ parentStandardType != 'Art'
+
+ <Art> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Art> shall not contain content items
+ hasContentItems == false
+
+ <Art> contains content item(s)
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <Document>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <Document>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <TOCI>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Sect> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <Sect> contains more than one <H>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <Sub>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <Sub>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <Em>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <Em>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <Strong>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <Strong>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <Span>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <Span>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <Quote>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <Quote>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <Reference>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <Reference>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <Ruby>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <RB>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <RB>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <RT>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <RT>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <RP>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <RP>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <Warichu>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <WT>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <WT>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <WP>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <WP>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <LI>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <LI>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <LBody>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <LBody>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <BibEntry>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <TR>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <TR>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <TH>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <TH>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <TD>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <TD>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <THead>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <THead>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <TBody>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <TBody>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <TFoot>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain content items
+ hasContentItems == false
+
+ <Sect> contains content item(s)
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Document>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Document>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <DocumentFragment>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Part>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Part>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Art>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Art>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Div>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Div>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Sect>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Sect>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Aside>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Aside>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <BlockQuote>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <P>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <P>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Note>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Note>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Code>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Code>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Hn>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Hn>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <H>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <H>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Title>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Title>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Sub>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Sub>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Lbl>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Lbl>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Em>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Em>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Strong>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Strong>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Span>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Span>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Quote>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Quote>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Link>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Link>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Reference>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Reference>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Annot>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Annot>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Form>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Form>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Ruby>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Ruby>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <RB>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <RB>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <RT>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <RT>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <RP>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <RP>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Warichu>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Warichu>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <WT>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <WT>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <WP>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <WP>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <FENote>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <FENote>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Index>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Index>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <L>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <L>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <LI>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <LI>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <LBody>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <LBody>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <BibEntry>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Table>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Table>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <TR>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <TR>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <TH>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <TH>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <TD>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <TD>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <THead>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <THead>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <TBody>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <TBody>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <TFoot>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <TFoot>
+
+
+
+
+
+
+
+
+ <TOC> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <TOC> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Figure>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Figure>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Formula>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Formula>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain content items
+ hasContentItems == false
+
+ <TOC> contains content item(s)
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Document>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Document>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <DocumentFragment>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Part>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Part>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Art>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Art>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Sect>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Sect>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <TOCI>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <TOCI>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Aside>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Aside>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <BlockQuote>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Note>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Note>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Code>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Code>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Hn>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Hn>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <H>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <H>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Title>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Title>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Sub>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Sub>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Em>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Em>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Strong>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Strong>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Span>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Span>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Quote>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Quote>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Link>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Link>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Annot>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Annot>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Form>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Form>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Ruby>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Ruby>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <RB>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <RB>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <RT>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <RT>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <RP>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <RP>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Warichu>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Warichu>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <WT>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <WT>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <WP>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <WP>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <FENote>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <FENote>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Index>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Index>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <L>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <L>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <LI>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <LI>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <LBody>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <LBody>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <BibEntry>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Table>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Table>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <TR>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <TR>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <TH>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <TH>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <TD>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <TD>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <THead>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <THead>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <TBody>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <TBody>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <TFoot>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <TFoot>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Caption>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Caption>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Figure>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Figure>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Formula>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Formula>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain content items
+ hasContentItems == false
+
+ <TOCI> contains content item(s)
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <TOCI>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <Aside>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <Aside>
+
+
+
+
+
+
+
+
+ <Aside> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <Aside> contains more than one <H>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <Title>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <Title>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <Sub>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <Sub>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <Em>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <Em>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <Strong>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <Strong>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <Span>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <Span>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <Quote>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <Quote>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <Ruby>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <RB>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <RB>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <RT>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <RT>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <RP>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <RP>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <Warichu>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <WT>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <WT>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <WP>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <WP>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <LI>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <LI>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <LBody>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <LBody>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <BibEntry>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <TR>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <TR>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <TH>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <TH>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <TD>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <TD>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <THead>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <THead>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <TBody>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <TBody>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <TFoot>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Aside> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <Aside> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <TOCI>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <TOCI>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <Aside>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <Aside>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <BlockQuote> contains more than one <H>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <Title>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <Title>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <Sub>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <Sub>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <Em>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <Em>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <Strong>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <Strong>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <Span>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <Span>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <Quote>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <Quote>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <Ruby>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <Ruby>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <RB>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <RB>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <RT>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <RT>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <RP>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <RP>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <Warichu>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <Warichu>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <WT>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <WT>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <WP>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <WP>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <LI>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <LI>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <LBody>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <LBody>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <BibEntry>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <TR>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <TR>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <TH>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <TH>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <TD>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <TD>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <THead>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <THead>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <TBody>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <TBody>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <TFoot>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <TFoot>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <BlockQuote> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <Document>
+ parentStandardType != 'Title'
+
+ <Title> contains <Document>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <DocumentFragment>
+ parentStandardType != 'Title'
+
+ <Title> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <Art>
+ parentStandardType != 'Title'
+
+ <Title> contains <Art>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <Sect>
+ parentStandardType != 'Title'
+
+ <Title> contains <Sect>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <TOC>
+ parentStandardType != 'Title'
+
+ <Title> contains <TOC>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <TOCI>
+ parentStandardType != 'Title'
+
+ <Title> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <BlockQuote>
+ parentStandardType != 'Title'
+
+ <Title> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <Hn>
+ parentStandardType != 'Title'
+
+ <Title> contains <Hn>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <H>
+ parentStandardType != 'Title'
+
+ <Title> contains <H>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <Title>
+ parentStandardType != 'Title'
+
+ <Title> contains <Title>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <Sub>
+ parentStandardType != 'Title'
+
+ <Title> contains <Sub>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <RB>
+ parentStandardType != 'Title'
+
+ <Title> contains <RB>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <RT>
+ parentStandardType != 'Title'
+
+ <Title> contains <RT>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <RP>
+ parentStandardType != 'Title'
+
+ <Title> contains <RP>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <WT>
+ parentStandardType != 'Title'
+
+ <Title> contains <WT>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <WP>
+ parentStandardType != 'Title'
+
+ <Title> contains <WP>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <Index>
+ parentStandardType != 'Title'
+
+ <Title> contains <Index>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <LI>
+ parentStandardType != 'Title'
+
+ <Title> contains <LI>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <LBody>
+ parentStandardType != 'Title'
+
+ <Title> contains <LBody>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <TR>
+ parentStandardType != 'Title'
+
+ <Title> contains <TR>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <TH>
+ parentStandardType != 'Title'
+
+ <Title> contains <TH>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <TD>
+ parentStandardType != 'Title'
+
+ <Title> contains <TD>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <THead>
+ parentStandardType != 'Title'
+
+ <Title> contains <THead>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <TBody>
+ parentStandardType != 'Title'
+
+ <Title> contains <TBody>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <TFoot>
+ parentStandardType != 'Title'
+
+ <Title> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Title> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <Title> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Document>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Document>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <DocumentFragment>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Part>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Part>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Art>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Art>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Div>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Div>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Sect>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Sect>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <TOC>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <TOC>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <TOCI>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Aside>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Aside>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <BlockQuote>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <P>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <P>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Hn>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Hn>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <H>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <H>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Title>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Title>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Sub>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Sub>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <RB>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <RB>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <RT>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <RT>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <RP>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <RP>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <WT>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <WT>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <WP>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <WP>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Index>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Index>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <LI>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <LI>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <LBody>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <LBody>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Table>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Table>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <TR>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <TR>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <TH>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <TH>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <TD>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <TD>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <THead>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <THead>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <TBody>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <TBody>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <TFoot>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Caption>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Caption>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Document>
+ parentStandardType != 'P'
+
+ <P> contains <Document>
+
+
+
+
+
+
+
+
+ <P> shall not contain <DocumentFragment>
+ parentStandardType != 'P'
+
+ <P> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Part>
+ parentStandardType != 'P'
+
+ <P> contains <Part>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Art>
+ parentStandardType != 'P'
+
+ <P> contains <Art>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Div>
+ parentStandardType != 'P'
+
+ <P> contains <Div>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Sect>
+ parentStandardType != 'P'
+
+ <P> contains <Sect>
+
+
+
+
+
+
+
+
+ <P> shall not contain <TOC>
+ parentStandardType != 'P'
+
+ <P> contains <TOC>
+
+
+
+
+
+
+
+
+ <P> shall not contain <TOCI>
+ parentStandardType != 'P'
+
+ <P> contains <TOCI>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Aside>
+ parentStandardType != 'P'
+
+ <P> contains <Aside>
+
+
+
+
+
+
+
+
+ <P> shall not contain <BlockQuote>
+ parentStandardType != 'P'
+
+ <P> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <P> shall not contain <P>
+ parentStandardType != 'P'
+
+ <P> contains <P>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Hn>
+ parentStandardType != 'P'
+
+ <P> contains <Hn>
+
+
+
+
+
+
+
+
+ <P> shall not contain <H>
+ parentStandardType != 'P'
+
+ <P> contains <H>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Title>
+ parentStandardType != 'P'
+
+ <P> contains <Title>
+
+
+
+
+
+
+
+
+ <P> shall not contain <RB>
+ parentStandardType != 'P'
+
+ <P> contains <RB>
+
+
+
+
+
+
+
+
+ <P> shall not contain <RT>
+ parentStandardType != 'P'
+
+ <P> contains <RT>
+
+
+
+
+
+
+
+
+ <P> shall not contain <RP>
+ parentStandardType != 'P'
+
+ <P> contains <RP>
+
+
+
+
+
+
+
+
+ <P> shall not contain <WT>
+ parentStandardType != 'P'
+
+ <P> contains <WT>
+
+
+
+
+
+
+
+
+ <P> shall not contain <WP>
+ parentStandardType != 'P'
+
+ <P> contains <WP>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Index>
+ parentStandardType != 'P'
+
+ <P> contains <Index>
+
+
+
+
+
+
+
+
+ <P> shall not contain <LI>
+ parentStandardType != 'P'
+
+ <P> contains <LI>
+
+
+
+
+
+
+
+
+ <P> shall not contain <LBody>
+ parentStandardType != 'P'
+
+ <P> contains <LBody>
+
+
+
+
+
+
+
+
+ <P> shall not contain <TR>
+ parentStandardType != 'P'
+
+ <P> contains <TR>
+
+
+
+
+
+
+
+
+ <P> shall not contain <TH>
+ parentStandardType != 'P'
+
+ <P> contains <TH>
+
+
+
+
+
+
+
+
+ <P> shall not contain <TD>
+ parentStandardType != 'P'
+
+ <P> contains <TD>
+
+
+
+
+
+
+
+
+ <P> shall not contain <THead>
+ parentStandardType != 'P'
+
+ <P> contains <THead>
+
+
+
+
+
+
+
+
+ <P> shall not contain <TBody>
+ parentStandardType != 'P'
+
+ <P> contains <TBody>
+
+
+
+
+
+
+
+
+ <P> shall not contain <TFoot>
+ parentStandardType != 'P'
+
+ <P> contains <TFoot>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Caption>
+ parentStandardType != 'P'
+
+ <P> contains <Caption>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <Document>
+ parentStandardType != 'Note'
+
+ <Note> contains <Document>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <TOC>
+ parentStandardType != 'Note'
+
+ <Note> contains <TOC>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <TOCI>
+ parentStandardType != 'Note'
+
+ <Note> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <Hn>
+ parentStandardType != 'Note'
+
+ <Note> contains <Hn>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <H>
+ parentStandardType != 'Note'
+
+ <Note> contains <H>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <Title>
+ parentStandardType != 'Note'
+
+ <Note> contains <Title>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <RB>
+ parentStandardType != 'Note'
+
+ <Note> contains <RB>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <RT>
+ parentStandardType != 'Note'
+
+ <Note> contains <RT>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <RP>
+ parentStandardType != 'Note'
+
+ <Note> contains <RP>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <WT>
+ parentStandardType != 'Note'
+
+ <Note> contains <WT>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <WP>
+ parentStandardType != 'Note'
+
+ <Note> contains <WP>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <LI>
+ parentStandardType != 'Note'
+
+ <Note> contains <LI>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <LBody>
+ parentStandardType != 'Note'
+
+ <Note> contains <LBody>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <TR>
+ parentStandardType != 'Note'
+
+ <Note> contains <TR>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <TH>
+ parentStandardType != 'Note'
+
+ <Note> contains <TH>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <TD>
+ parentStandardType != 'Note'
+
+ <Note> contains <TD>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <THead>
+ parentStandardType != 'Note'
+
+ <Note> contains <THead>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <TBody>
+ parentStandardType != 'Note'
+
+ <Note> contains <TBody>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <TFoot>
+ parentStandardType != 'Note'
+
+ <Note> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Document>
+ parentStandardType != 'Code'
+
+ <Code> contains <Document>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Art>
+ parentStandardType != 'Code'
+
+ <Code> contains <Art>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Sect>
+ parentStandardType != 'Code'
+
+ <Code> contains <Sect>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <TOC>
+ parentStandardType != 'Code'
+
+ <Code> contains <TOC>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <TOCI>
+ parentStandardType != 'Code'
+
+ <Code> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Aside>
+ parentStandardType != 'Code'
+
+ <Code> contains <Aside>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <BlockQuote>
+ parentStandardType != 'Code'
+
+ <Code> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <P>
+ parentStandardType != 'Code'
+
+ <Code> contains <P>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Code>
+ parentStandardType != 'Code'
+
+ <Code> contains <Code>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Hn>
+ parentStandardType != 'Code'
+
+ <Code> contains <Hn>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <H>
+ parentStandardType != 'Code'
+
+ <Code> contains <H>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Title>
+ parentStandardType != 'Code'
+
+ <Code> contains <Title>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Sub>
+ parentStandardType != 'Code'
+
+ <Code> contains <Sub>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Lbl>
+ parentStandardType != 'Code'
+
+ <Code> contains <Lbl>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Quote>
+ parentStandardType != 'Code'
+
+ <Code> contains <Quote>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Form>
+ parentStandardType != 'Code'
+
+ <Code> contains <Form>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Ruby>
+ parentStandardType != 'Code'
+
+ <Code> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <RB>
+ parentStandardType != 'Code'
+
+ <Code> contains <RB>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <RT>
+ parentStandardType != 'Code'
+
+ <Code> contains <RT>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <RP>
+ parentStandardType != 'Code'
+
+ <Code> contains <RP>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Warichu>
+ parentStandardType != 'Code'
+
+ <Code> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <WT>
+ parentStandardType != 'Code'
+
+ <Code> contains <WT>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <WP>
+ parentStandardType != 'Code'
+
+ <Code> contains <WP>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Index>
+ parentStandardType != 'Code'
+
+ <Code> contains <Index>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <L>
+ parentStandardType != 'Code'
+
+ <Code> contains <L>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <LI>
+ parentStandardType != 'Code'
+
+ <Code> contains <LI>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <LBody>
+ parentStandardType != 'Code'
+
+ <Code> contains <LBody>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Table>
+ parentStandardType != 'Code'
+
+ <Code> contains <Table>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <TR>
+ parentStandardType != 'Code'
+
+ <Code> contains <TR>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <TH>
+ parentStandardType != 'Code'
+
+ <Code> contains <TH>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <TD>
+ parentStandardType != 'Code'
+
+ <Code> contains <TD>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <THead>
+ parentStandardType != 'Code'
+
+ <Code> contains <THead>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <TBody>
+ parentStandardType != 'Code'
+
+ <Code> contains <TBody>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <TFoot>
+ parentStandardType != 'Code'
+
+ <Code> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Caption>
+ parentStandardType != 'Code'
+
+ <Code> contains <Caption>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Figure>
+ parentStandardType != 'Code'
+
+ <Code> contains <Figure>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Formula>
+ parentStandardType != 'Code'
+
+ <Code> contains <Formula>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <Document>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <Document>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <DocumentFragment>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <Part>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <Part>
+
+
+
+
+
+
+
+
+ <Hn> shall contain at most one <Art>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1
+
+ <Hn> contains more than one <Art>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <Div>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <Div>
+
+
+
+
+
+
+
+
+ <Hn> shall contain at most one <Sect>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1
+
+ <Hn> contains more than one <Sect>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <TOC>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <TOC>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <TOCI>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <Aside>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <Aside>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <BlockQuote>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <P>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <P>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <Hn>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <Hn>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <H>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <H>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <Title>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <Title>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <RB>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <RB>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <RT>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <RT>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <RP>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <RP>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <WT>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <WT>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <WP>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <WP>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <Index>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <Index>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <L>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <L>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <LI>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <LI>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <LBody>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <LBody>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <Table>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <Table>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <TR>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <TR>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <TH>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <TH>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <TD>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <TD>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <THead>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <THead>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <TBody>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <TBody>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <TFoot>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <Caption>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <Caption>
+
+
+
+
+
+
+
+
+ <H> shall not contain <Document>
+ parentStandardType != 'H'
+
+ <H> contains <Document>
+
+
+
+
+
+
+
+
+ <H> shall not contain <DocumentFragment>
+ parentStandardType != 'H'
+
+ <H> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <H> shall not contain <Part>
+ parentStandardType != 'H'
+
+ <H> contains <Part>
+
+
+
+
+
+
+
+
+ <H> shall contain at most one <Art>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1
+
+ <H> contains more than one <Art>
+
+
+
+
+
+
+
+
+ <H> shall not contain <Div>
+ parentStandardType != 'H'
+
+ <H> contains <Div>
+
+
+
+
+
+
+
+
+ <H> shall contain at most one <Sect>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1
+
+ <H> contains more than one <Sect>
+
+
+
+
+
+
+
+
+ <H> shall not contain <TOC>
+ parentStandardType != 'H'
+
+ <H> contains <TOC>
+
+
+
+
+
+
+
+
+ <H> shall not contain <TOCI>
+ parentStandardType != 'H'
+
+ <H> contains <TOCI>
+
+
+
+
+
+
+
+
+ <H> shall not contain <Aside>
+ parentStandardType != 'H'
+
+ <H> contains <Aside>
+
+
+
+
+
+
+
+
+ <H> shall not contain <BlockQuote>
+ parentStandardType != 'H'
+
+ <H> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <H> shall not contain <P>
+ parentStandardType != 'H'
+
+ <H> contains <P>
+
+
+
+
+
+
+
+
+ <H> shall not contain <Hn>
+ parentStandardType != 'H'
+
+ <H> contains <Hn>
+
+
+
+
+
+
+
+
+ <H> shall not contain <H>
+ parentStandardType != 'H'
+
+ <H> contains <H>
+
+
+
+
+
+
+
+
+ <H> shall not contain <Title>
+ parentStandardType != 'H'
+
+ <H> contains <Title>
+
+
+
+
+
+
+
+
+ <H> shall not contain <RB>
+ parentStandardType != 'H'
+
+ <H> contains <RB>
+
+
+
+
+
+
+
+
+ <H> shall not contain <RT>
+ parentStandardType != 'H'
+
+ <H> contains <RT>
+
+
+
+
+
+
+
+
+ <H> shall not contain <RP>
+ parentStandardType != 'H'
+
+ <H> contains <RP>
+
+
+
+
+
+
+
+
+ <H> shall not contain <WT>
+ parentStandardType != 'H'
+
+ <H> contains <WT>
+
+
+
+
+
+
+
+
+ <H> shall not contain <WP>
+ parentStandardType != 'H'
+
+ <H> contains <WP>
+
+
+
+
+
+
+
+
+ <H> shall not contain <Index>
+ parentStandardType != 'H'
+
+ <H> contains <Index>
+
+
+
+
+
+
+
+
+ <H> shall not contain <L>
+ parentStandardType != 'H'
+
+ <H> contains <L>
+
+
+
+
+
+
+
+
+ <H> shall not contain <LI>
+ parentStandardType != 'H'
+
+ <H> contains <LI>
+
+
+
+
+
+
+
+
+ <H> shall not contain <LBody>
+ parentStandardType != 'H'
+
+ <H> contains <LBody>
+
+
+
+
+
+
+
+
+ <H> shall not contain <Table>
+ parentStandardType != 'H'
+
+ <H> contains <Table>
+
+
+
+
+
+
+
+
+ <H> shall not contain <TR>
+ parentStandardType != 'H'
+
+ <H> contains <TR>
+
+
+
+
+
+
+
+
+ <H> shall not contain <TH>
+ parentStandardType != 'H'
+
+ <H> contains <TH>
+
+
+
+
+
+
+
+
+ <H> shall not contain <TD>
+ parentStandardType != 'H'
+
+ <H> contains <TD>
+
+
+
+
+
+
+
+
+ <H> shall not contain <THead>
+ parentStandardType != 'H'
+
+ <H> contains <THead>
+
+
+
+
+
+
+
+
+ <H> shall not contain <TBody>
+ parentStandardType != 'H'
+
+ <H> contains <TBody>
+
+
+
+
+
+
+
+
+ <H> shall not contain <TFoot>
+ parentStandardType != 'H'
+
+ <H> contains <TFoot>
+
+
+
+
+
+
+
+
+ <H> shall not contain <Caption>
+ parentStandardType != 'H'
+
+ <H> contains <Caption>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Document>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Document>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <DocumentFragment>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Part>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Part>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Art>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Art>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Div>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Div>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Sect>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Sect>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <TOC>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <TOC>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <TOCI>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Aside>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Aside>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <BlockQuote>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <P>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <P>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Hn>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Hn>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <H>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <H>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Title>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Title>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Lbl>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Lbl>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <RB>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <RB>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <RT>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <RT>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <RP>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <RP>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <WT>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <WT>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <WP>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <WP>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Index>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Index>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <L>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <L>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <LI>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <LI>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <LBody>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <LBody>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Table>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Table>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <TR>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <TR>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <TH>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <TH>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <TD>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <TD>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <THead>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <THead>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <TBody>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <TBody>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <TFoot>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Caption>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Caption>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Document>
+ parentStandardType != 'Em'
+
+ <Em> contains <Document>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <DocumentFragment>
+ parentStandardType != 'Em'
+
+ <Em> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Part>
+ parentStandardType != 'Em'
+
+ <Em> contains <Part>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Art>
+ parentStandardType != 'Em'
+
+ <Em> contains <Art>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Div>
+ parentStandardType != 'Em'
+
+ <Em> contains <Div>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Sect>
+ parentStandardType != 'Em'
+
+ <Em> contains <Sect>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <TOC>
+ parentStandardType != 'Em'
+
+ <Em> contains <TOC>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <TOCI>
+ parentStandardType != 'Em'
+
+ <Em> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Aside>
+ parentStandardType != 'Em'
+
+ <Em> contains <Aside>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <BlockQuote>
+ parentStandardType != 'Em'
+
+ <Em> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <P>
+ parentStandardType != 'Em'
+
+ <Em> contains <P>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Hn>
+ parentStandardType != 'Em'
+
+ <Em> contains <Hn>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <H>
+ parentStandardType != 'Em'
+
+ <Em> contains <H>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Title>
+ parentStandardType != 'Em'
+
+ <Em> contains <Title>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <RB>
+ parentStandardType != 'Em'
+
+ <Em> contains <RB>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <RT>
+ parentStandardType != 'Em'
+
+ <Em> contains <RT>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <RP>
+ parentStandardType != 'Em'
+
+ <Em> contains <RP>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <WT>
+ parentStandardType != 'Em'
+
+ <Em> contains <WT>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <WP>
+ parentStandardType != 'Em'
+
+ <Em> contains <WP>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Index>
+ parentStandardType != 'Em'
+
+ <Em> contains <Index>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <L>
+ parentStandardType != 'Em'
+
+ <Em> contains <L>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <LI>
+ parentStandardType != 'Em'
+
+ <Em> contains <LI>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <LBody>
+ parentStandardType != 'Em'
+
+ <Em> contains <LBody>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Table>
+ parentStandardType != 'Em'
+
+ <Em> contains <Table>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <TR>
+ parentStandardType != 'Em'
+
+ <Em> contains <TR>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <TH>
+ parentStandardType != 'Em'
+
+ <Em> contains <TH>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <TD>
+ parentStandardType != 'Em'
+
+ <Em> contains <TD>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <THead>
+ parentStandardType != 'Em'
+
+ <Em> contains <THead>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <TBody>
+ parentStandardType != 'Em'
+
+ <Em> contains <TBody>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <TFoot>
+ parentStandardType != 'Em'
+
+ <Em> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Caption>
+ parentStandardType != 'Em'
+
+ <Em> contains <Caption>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Document>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Document>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <DocumentFragment>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Part>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Part>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Art>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Art>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Div>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Div>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Sect>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Sect>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <TOC>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <TOC>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <TOCI>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Aside>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Aside>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <BlockQuote>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <P>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <P>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Hn>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Hn>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <H>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <H>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Title>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Title>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <RB>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <RB>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <RT>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <RT>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <RP>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <RP>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <WT>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <WT>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <WP>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <WP>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Index>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Index>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <L>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <L>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <LI>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <LI>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <LBody>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <LBody>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Table>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Table>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <TR>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <TR>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <TH>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <TH>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <TD>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <TD>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <THead>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <THead>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <TBody>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <TBody>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <TFoot>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Caption>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Caption>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Document>
+ parentStandardType != 'Span'
+
+ <Span> contains <Document>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <DocumentFragment>
+ parentStandardType != 'Span'
+
+ <Span> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Part>
+ parentStandardType != 'Span'
+
+ <Span> contains <Part>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Art>
+ parentStandardType != 'Span'
+
+ <Span> contains <Art>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Div>
+ parentStandardType != 'Span'
+
+ <Span> contains <Div>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Sect>
+ parentStandardType != 'Span'
+
+ <Span> contains <Sect>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <TOC>
+ parentStandardType != 'Span'
+
+ <Span> contains <TOC>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <TOCI>
+ parentStandardType != 'Span'
+
+ <Span> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Aside>
+ parentStandardType != 'Span'
+
+ <Span> contains <Aside>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <BlockQuote>
+ parentStandardType != 'Span'
+
+ <Span> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <P>
+ parentStandardType != 'Span'
+
+ <Span> contains <P>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Hn>
+ parentStandardType != 'Span'
+
+ <Span> contains <Hn>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <H>
+ parentStandardType != 'Span'
+
+ <Span> contains <H>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Title>
+ parentStandardType != 'Span'
+
+ <Span> contains <Title>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <RB>
+ parentStandardType != 'Span'
+
+ <Span> contains <RB>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <RT>
+ parentStandardType != 'Span'
+
+ <Span> contains <RT>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <RP>
+ parentStandardType != 'Span'
+
+ <Span> contains <RP>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <WT>
+ parentStandardType != 'Span'
+
+ <Span> contains <WT>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <WP>
+ parentStandardType != 'Span'
+
+ <Span> contains <WP>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Index>
+ parentStandardType != 'Span'
+
+ <Span> contains <Index>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <L>
+ parentStandardType != 'Span'
+
+ <Span> contains <L>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <LI>
+ parentStandardType != 'Span'
+
+ <Span> contains <LI>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <LBody>
+ parentStandardType != 'Span'
+
+ <Span> contains <LBody>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Table>
+ parentStandardType != 'Span'
+
+ <Span> contains <Table>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <TR>
+ parentStandardType != 'Span'
+
+ <Span> contains <TR>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <TH>
+ parentStandardType != 'Span'
+
+ <Span> contains <TH>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <TD>
+ parentStandardType != 'Span'
+
+ <Span> contains <TD>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <THead>
+ parentStandardType != 'Span'
+
+ <Span> contains <THead>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <TBody>
+ parentStandardType != 'Span'
+
+ <Span> contains <TBody>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <TFoot>
+ parentStandardType != 'Span'
+
+ <Span> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Caption>
+ parentStandardType != 'Span'
+
+ <Span> contains <Caption>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Document>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Document>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <DocumentFragment>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Part>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Part>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Art>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Art>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Div>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Div>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Sect>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Sect>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <TOC>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <TOC>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <TOCI>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Aside>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Aside>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <BlockQuote>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <P>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <P>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Hn>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Hn>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <H>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <H>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Title>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Title>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <RB>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <RB>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <RT>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <RT>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <RP>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <RP>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <WT>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <WT>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <WP>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <WP>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Index>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Index>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <L>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <L>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <LI>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <LI>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <LBody>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <LBody>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Table>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Table>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <TR>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <TR>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <TH>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <TH>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <TD>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <TD>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <THead>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <THead>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <TBody>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <TBody>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <TFoot>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Caption>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Caption>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <Document>
+ parentStandardType != 'Link'
+
+ <Link> contains <Document>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <TOC>
+ parentStandardType != 'Link'
+
+ <Link> contains <TOC>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <TOCI>
+ parentStandardType != 'Link'
+
+ <Link> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <Link>
+ parentStandardType != 'Link'
+
+ <Link> contains <Link>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <RB>
+ parentStandardType != 'Link'
+
+ <Link> contains <RB>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <RT>
+ parentStandardType != 'Link'
+
+ <Link> contains <RT>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <RP>
+ parentStandardType != 'Link'
+
+ <Link> contains <RP>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <WT>
+ parentStandardType != 'Link'
+
+ <Link> contains <WT>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <WP>
+ parentStandardType != 'Link'
+
+ <Link> contains <WP>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <Index>
+ parentStandardType != 'Link'
+
+ <Link> contains <Index>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <LI>
+ parentStandardType != 'Link'
+
+ <Link> contains <LI>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <LBody>
+ parentStandardType != 'Link'
+
+ <Link> contains <LBody>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <TR>
+ parentStandardType != 'Link'
+
+ <Link> contains <TR>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <TH>
+ parentStandardType != 'Link'
+
+ <Link> contains <TH>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <TD>
+ parentStandardType != 'Link'
+
+ <Link> contains <TD>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <THead>
+ parentStandardType != 'Link'
+
+ <Link> contains <THead>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <TBody>
+ parentStandardType != 'Link'
+
+ <Link> contains <TBody>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <TFoot>
+ parentStandardType != 'Link'
+
+ <Link> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Document>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Document>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <DocumentFragment>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Part>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Part>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Art>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Art>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Div>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Div>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Sect>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Sect>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <TOC>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <TOC>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <TOCI>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Aside>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Aside>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <BlockQuote>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <P>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <P>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Code>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Code>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Hn>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Hn>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <H>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <H>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Title>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Title>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Sub>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Sub>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Quote>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Quote>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Reference>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Reference>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Form>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Form>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Ruby>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <RB>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <RB>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <RT>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <RT>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <RP>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <RP>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Warichu>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <WT>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <WT>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <WP>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <WP>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Index>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Index>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <L>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <L>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <LI>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <LI>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <LBody>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <LBody>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Table>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Table>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <TR>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <TR>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <TH>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <TH>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <TD>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <TD>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <THead>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <THead>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <TBody>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <TBody>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <TFoot>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Caption>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Caption>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Formula>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Formula>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <Document>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <Document>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <TOC>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <TOC>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <TOCI>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <Private>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <Private>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <RB>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <RB>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <RT>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <RT>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <RP>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <RP>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <WT>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <WT>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <WP>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <WP>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <Index>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <Index>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <LI>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <LI>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <LBody>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <LBody>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <TR>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <TR>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <TH>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <TH>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <TD>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <TD>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <THead>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <THead>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <TBody>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <TBody>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <TFoot>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Document>
+ parentStandardType != 'Form'
+
+ <Form> contains <Document>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <DocumentFragment>
+ parentStandardType != 'Form'
+
+ <Form> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Art>
+ parentStandardType != 'Form'
+
+ <Form> contains <Art>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Sect>
+ parentStandardType != 'Form'
+
+ <Form> contains <Sect>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <TOC>
+ parentStandardType != 'Form'
+
+ <Form> contains <TOC>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <TOCI>
+ parentStandardType != 'Form'
+
+ <Form> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Aside>
+ parentStandardType != 'Form'
+
+ <Form> contains <Aside>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <BlockQuote>
+ parentStandardType != 'Form'
+
+ <Form> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <P>
+ parentStandardType != 'Form'
+
+ <Form> contains <P>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Hn>
+ parentStandardType != 'Form'
+
+ <Form> contains <Hn>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <H>
+ parentStandardType != 'Form'
+
+ <Form> contains <H>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Title>
+ parentStandardType != 'Form'
+
+ <Form> contains <Title>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Sub>
+ parentStandardType != 'Form'
+
+ <Form> contains <Sub>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Em>
+ parentStandardType != 'Form'
+
+ <Form> contains <Em>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Strong>
+ parentStandardType != 'Form'
+
+ <Form> contains <Strong>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Span>
+ parentStandardType != 'Form'
+
+ <Form> contains <Span>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Quote>
+ parentStandardType != 'Form'
+
+ <Form> contains <Quote>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Link>
+ parentStandardType != 'Form'
+
+ <Form> contains <Link>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Annot>
+ parentStandardType != 'Form'
+
+ <Form> contains <Annot>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Form>
+ parentStandardType != 'Form'
+
+ <Form> contains <Form>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Ruby>
+ parentStandardType != 'Form'
+
+ <Form> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <RB>
+ parentStandardType != 'Form'
+
+ <Form> contains <RB>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <RT>
+ parentStandardType != 'Form'
+
+ <Form> contains <RT>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <RP>
+ parentStandardType != 'Form'
+
+ <Form> contains <RP>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Warichu>
+ parentStandardType != 'Form'
+
+ <Form> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <WT>
+ parentStandardType != 'Form'
+
+ <Form> contains <WT>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <WP>
+ parentStandardType != 'Form'
+
+ <Form> contains <WP>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Index>
+ parentStandardType != 'Form'
+
+ <Form> contains <Index>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <LI>
+ parentStandardType != 'Form'
+
+ <Form> contains <LI>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <LBody>
+ parentStandardType != 'Form'
+
+ <Form> contains <LBody>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <TR>
+ parentStandardType != 'Form'
+
+ <Form> contains <TR>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <TH>
+ parentStandardType != 'Form'
+
+ <Form> contains <TH>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <TD>
+ parentStandardType != 'Form'
+
+ <Form> contains <TD>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <THead>
+ parentStandardType != 'Form'
+
+ <Form> contains <THead>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <TBody>
+ parentStandardType != 'Form'
+
+ <Form> contains <TBody>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <TFoot>
+ parentStandardType != 'Form'
+
+ <Form> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Form> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <Form> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Document>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Document>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <DocumentFragment>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Part>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Part>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Art>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Art>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Div>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Div>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Sect>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Sect>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <TOC>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <TOC>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <TOCI>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Aside>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Aside>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <BlockQuote>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <P>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <P>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Note>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Note>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Code>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Code>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Hn>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Hn>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <H>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <H>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Title>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Title>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Sub>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Sub>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Lbl>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Lbl>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Em>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Em>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Strong>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Strong>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Span>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Span>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Quote>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Quote>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Link>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Link>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Reference>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Reference>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Annot>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Annot>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Form>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Form>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Ruby>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Warichu>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <WT>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <WT>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <WP>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <WP>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <FENote>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <FENote>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Index>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Index>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <L>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <L>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <LI>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <LI>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <LBody>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <LBody>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <BibEntry>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Table>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Table>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <TR>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <TR>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <TH>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <TH>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <TD>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <TD>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <THead>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <THead>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <TBody>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <TBody>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <TFoot>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Caption>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Caption>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Figure>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Figure>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Formula>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Formula>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Artifact>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Artifact>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Document>
+ parentStandardType != 'RB'
+
+ <RB> contains <Document>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <DocumentFragment>
+ parentStandardType != 'RB'
+
+ <RB> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Part>
+ parentStandardType != 'RB'
+
+ <RB> contains <Part>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Art>
+ parentStandardType != 'RB'
+
+ <RB> contains <Art>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Div>
+ parentStandardType != 'RB'
+
+ <RB> contains <Div>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Sect>
+ parentStandardType != 'RB'
+
+ <RB> contains <Sect>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <TOC>
+ parentStandardType != 'RB'
+
+ <RB> contains <TOC>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <TOCI>
+ parentStandardType != 'RB'
+
+ <RB> contains <TOCI>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Aside>
+ parentStandardType != 'RB'
+
+ <RB> contains <Aside>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <BlockQuote>
+ parentStandardType != 'RB'
+
+ <RB> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <P>
+ parentStandardType != 'RB'
+
+ <RB> contains <P>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Note>
+ parentStandardType != 'RB'
+
+ <RB> contains <Note>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Code>
+ parentStandardType != 'RB'
+
+ <RB> contains <Code>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Hn>
+ parentStandardType != 'RB'
+
+ <RB> contains <Hn>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <H>
+ parentStandardType != 'RB'
+
+ <RB> contains <H>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Title>
+ parentStandardType != 'RB'
+
+ <RB> contains <Title>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Lbl>
+ parentStandardType != 'RB'
+
+ <RB> contains <Lbl>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Ruby>
+ parentStandardType != 'RB'
+
+ <RB> contains <Ruby>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <RB>
+ parentStandardType != 'RB'
+
+ <RB> contains <RB>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <RT>
+ parentStandardType != 'RB'
+
+ <RB> contains <RT>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <RP>
+ parentStandardType != 'RB'
+
+ <RB> contains <RP>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Warichu>
+ parentStandardType != 'RB'
+
+ <RB> contains <Warichu>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <WT>
+ parentStandardType != 'RB'
+
+ <RB> contains <WT>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <WP>
+ parentStandardType != 'RB'
+
+ <RB> contains <WP>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <FENote>
+ parentStandardType != 'RB'
+
+ <RB> contains <FENote>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Index>
+ parentStandardType != 'RB'
+
+ <RB> contains <Index>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <L>
+ parentStandardType != 'RB'
+
+ <RB> contains <L>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <LI>
+ parentStandardType != 'RB'
+
+ <RB> contains <LI>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <LBody>
+ parentStandardType != 'RB'
+
+ <RB> contains <LBody>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <BibEntry>
+ parentStandardType != 'RB'
+
+ <RB> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Table>
+ parentStandardType != 'RB'
+
+ <RB> contains <Table>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <TR>
+ parentStandardType != 'RB'
+
+ <RB> contains <TR>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <TH>
+ parentStandardType != 'RB'
+
+ <RB> contains <TH>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <TD>
+ parentStandardType != 'RB'
+
+ <RB> contains <TD>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <THead>
+ parentStandardType != 'RB'
+
+ <RB> contains <THead>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <TBody>
+ parentStandardType != 'RB'
+
+ <RB> contains <TBody>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <TFoot>
+ parentStandardType != 'RB'
+
+ <RB> contains <TFoot>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Caption>
+ parentStandardType != 'RB'
+
+ <RB> contains <Caption>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Figure>
+ parentStandardType != 'RB'
+
+ <RB> contains <Figure>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Formula>
+ parentStandardType != 'RB'
+
+ <RB> contains <Formula>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Document>
+ parentStandardType != 'RT'
+
+ <RT> contains <Document>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <DocumentFragment>
+ parentStandardType != 'RT'
+
+ <RT> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Part>
+ parentStandardType != 'RT'
+
+ <RT> contains <Part>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Art>
+ parentStandardType != 'RT'
+
+ <RT> contains <Art>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Div>
+ parentStandardType != 'RT'
+
+ <RT> contains <Div>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Sect>
+ parentStandardType != 'RT'
+
+ <RT> contains <Sect>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <TOC>
+ parentStandardType != 'RT'
+
+ <RT> contains <TOC>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <TOCI>
+ parentStandardType != 'RT'
+
+ <RT> contains <TOCI>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Aside>
+ parentStandardType != 'RT'
+
+ <RT> contains <Aside>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <BlockQuote>
+ parentStandardType != 'RT'
+
+ <RT> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <P>
+ parentStandardType != 'RT'
+
+ <RT> contains <P>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Note>
+ parentStandardType != 'RT'
+
+ <RT> contains <Note>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Code>
+ parentStandardType != 'RT'
+
+ <RT> contains <Code>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Hn>
+ parentStandardType != 'RT'
+
+ <RT> contains <Hn>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <H>
+ parentStandardType != 'RT'
+
+ <RT> contains <H>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Title>
+ parentStandardType != 'RT'
+
+ <RT> contains <Title>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Lbl>
+ parentStandardType != 'RT'
+
+ <RT> contains <Lbl>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Ruby>
+ parentStandardType != 'RT'
+
+ <RT> contains <Ruby>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <RB>
+ parentStandardType != 'RT'
+
+ <RT> contains <RB>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <RT>
+ parentStandardType != 'RT'
+
+ <RT> contains <RT>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <RP>
+ parentStandardType != 'RT'
+
+ <RT> contains <RP>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Warichu>
+ parentStandardType != 'RT'
+
+ <RT> contains <Warichu>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <WT>
+ parentStandardType != 'RT'
+
+ <RT> contains <WT>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <WP>
+ parentStandardType != 'RT'
+
+ <RT> contains <WP>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <FENote>
+ parentStandardType != 'RT'
+
+ <RT> contains <FENote>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Index>
+ parentStandardType != 'RT'
+
+ <RT> contains <Index>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <L>
+ parentStandardType != 'RT'
+
+ <RT> contains <L>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <LI>
+ parentStandardType != 'RT'
+
+ <RT> contains <LI>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <LBody>
+ parentStandardType != 'RT'
+
+ <RT> contains <LBody>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <BibEntry>
+ parentStandardType != 'RT'
+
+ <RT> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Table>
+ parentStandardType != 'RT'
+
+ <RT> contains <Table>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <TR>
+ parentStandardType != 'RT'
+
+ <RT> contains <TR>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <TH>
+ parentStandardType != 'RT'
+
+ <RT> contains <TH>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <TD>
+ parentStandardType != 'RT'
+
+ <RT> contains <TD>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <THead>
+ parentStandardType != 'RT'
+
+ <RT> contains <THead>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <TBody>
+ parentStandardType != 'RT'
+
+ <RT> contains <TBody>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <TFoot>
+ parentStandardType != 'RT'
+
+ <RT> contains <TFoot>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Caption>
+ parentStandardType != 'RT'
+
+ <RT> contains <Caption>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Figure>
+ parentStandardType != 'RT'
+
+ <RT> contains <Figure>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Formula>
+ parentStandardType != 'RT'
+
+ <RT> contains <Formula>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Document>
+ parentStandardType != 'RP'
+
+ <RP> contains <Document>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <DocumentFragment>
+ parentStandardType != 'RP'
+
+ <RP> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Part>
+ parentStandardType != 'RP'
+
+ <RP> contains <Part>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Art>
+ parentStandardType != 'RP'
+
+ <RP> contains <Art>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Div>
+ parentStandardType != 'RP'
+
+ <RP> contains <Div>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Sect>
+ parentStandardType != 'RP'
+
+ <RP> contains <Sect>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <TOC>
+ parentStandardType != 'RP'
+
+ <RP> contains <TOC>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <TOCI>
+ parentStandardType != 'RP'
+
+ <RP> contains <TOCI>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Aside>
+ parentStandardType != 'RP'
+
+ <RP> contains <Aside>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <BlockQuote>
+ parentStandardType != 'RP'
+
+ <RP> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <P>
+ parentStandardType != 'RP'
+
+ <RP> contains <P>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Note>
+ parentStandardType != 'RP'
+
+ <RP> contains <Note>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Code>
+ parentStandardType != 'RP'
+
+ <RP> contains <Code>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Hn>
+ parentStandardType != 'RP'
+
+ <RP> contains <Hn>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <H>
+ parentStandardType != 'RP'
+
+ <RP> contains <H>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Title>
+ parentStandardType != 'RP'
+
+ <RP> contains <Title>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Lbl>
+ parentStandardType != 'RP'
+
+ <RP> contains <Lbl>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Ruby>
+ parentStandardType != 'RP'
+
+ <RP> contains <Ruby>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <RB>
+ parentStandardType != 'RP'
+
+ <RP> contains <RB>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <RT>
+ parentStandardType != 'RP'
+
+ <RP> contains <RT>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <RP>
+ parentStandardType != 'RP'
+
+ <RP> contains <RP>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Warichu>
+ parentStandardType != 'RP'
+
+ <RP> contains <Warichu>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <WT>
+ parentStandardType != 'RP'
+
+ <RP> contains <WT>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <WP>
+ parentStandardType != 'RP'
+
+ <RP> contains <WP>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <FENote>
+ parentStandardType != 'RP'
+
+ <RP> contains <FENote>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Index>
+ parentStandardType != 'RP'
+
+ <RP> contains <Index>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <L>
+ parentStandardType != 'RP'
+
+ <RP> contains <L>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <LI>
+ parentStandardType != 'RP'
+
+ <RP> contains <LI>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <LBody>
+ parentStandardType != 'RP'
+
+ <RP> contains <LBody>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <BibEntry>
+ parentStandardType != 'RP'
+
+ <RP> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Table>
+ parentStandardType != 'RP'
+
+ <RP> contains <Table>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <TR>
+ parentStandardType != 'RP'
+
+ <RP> contains <TR>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <TH>
+ parentStandardType != 'RP'
+
+ <RP> contains <TH>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <TD>
+ parentStandardType != 'RP'
+
+ <RP> contains <TD>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <THead>
+ parentStandardType != 'RP'
+
+ <RP> contains <THead>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <TBody>
+ parentStandardType != 'RP'
+
+ <RP> contains <TBody>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <TFoot>
+ parentStandardType != 'RP'
+
+ <RP> contains <TFoot>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Caption>
+ parentStandardType != 'RP'
+
+ <RP> contains <Caption>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Figure>
+ parentStandardType != 'RP'
+
+ <RP> contains <Figure>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Formula>
+ parentStandardType != 'RP'
+
+ <RP> contains <Formula>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Document>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Document>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <DocumentFragment>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Part>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Part>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Art>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Art>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Div>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Div>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Sect>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Sect>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <TOC>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <TOC>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <TOCI>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Aside>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Aside>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <BlockQuote>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <P>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <P>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Note>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Note>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Code>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Code>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Hn>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Hn>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <H>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <H>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Title>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Title>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Sub>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Sub>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Lbl>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Lbl>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Em>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Em>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Strong>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Strong>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Span>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Span>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Quote>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Quote>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Link>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Link>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Reference>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Reference>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Annot>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Annot>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Form>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Form>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Ruby>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <RB>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <RB>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <RT>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <RT>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <RP>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <RP>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Warichu>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <FENote>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <FENote>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Index>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Index>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <L>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <L>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <LI>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <LI>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <LBody>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <LBody>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <BibEntry>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Table>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Table>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <TR>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <TR>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <TH>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <TH>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <TD>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <TD>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <THead>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <THead>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <TBody>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <TBody>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <TFoot>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Caption>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Caption>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Figure>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Figure>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Formula>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Formula>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Artifact>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Artifact>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Document>
+ parentStandardType != 'WT'
+
+ <WT> contains <Document>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <DocumentFragment>
+ parentStandardType != 'WT'
+
+ <WT> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Part>
+ parentStandardType != 'WT'
+
+ <WT> contains <Part>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Art>
+ parentStandardType != 'WT'
+
+ <WT> contains <Art>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Div>
+ parentStandardType != 'WT'
+
+ <WT> contains <Div>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Sect>
+ parentStandardType != 'WT'
+
+ <WT> contains <Sect>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <TOC>
+ parentStandardType != 'WT'
+
+ <WT> contains <TOC>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <TOCI>
+ parentStandardType != 'WT'
+
+ <WT> contains <TOCI>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Aside>
+ parentStandardType != 'WT'
+
+ <WT> contains <Aside>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <BlockQuote>
+ parentStandardType != 'WT'
+
+ <WT> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <P>
+ parentStandardType != 'WT'
+
+ <WT> contains <P>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Note>
+ parentStandardType != 'WT'
+
+ <WT> contains <Note>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Code>
+ parentStandardType != 'WT'
+
+ <WT> contains <Code>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Hn>
+ parentStandardType != 'WT'
+
+ <WT> contains <Hn>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <H>
+ parentStandardType != 'WT'
+
+ <WT> contains <H>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Title>
+ parentStandardType != 'WT'
+
+ <WT> contains <Title>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Lbl>
+ parentStandardType != 'WT'
+
+ <WT> contains <Lbl>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Ruby>
+ parentStandardType != 'WT'
+
+ <WT> contains <Ruby>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <RB>
+ parentStandardType != 'WT'
+
+ <WT> contains <RB>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <RT>
+ parentStandardType != 'WT'
+
+ <WT> contains <RT>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <RP>
+ parentStandardType != 'WT'
+
+ <WT> contains <RP>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Warichu>
+ parentStandardType != 'WT'
+
+ <WT> contains <Warichu>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <WT>
+ parentStandardType != 'WT'
+
+ <WT> contains <WT>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <WP>
+ parentStandardType != 'WT'
+
+ <WT> contains <WP>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <FENote>
+ parentStandardType != 'WT'
+
+ <WT> contains <FENote>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Index>
+ parentStandardType != 'WT'
+
+ <WT> contains <Index>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <L>
+ parentStandardType != 'WT'
+
+ <WT> contains <L>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <LI>
+ parentStandardType != 'WT'
+
+ <WT> contains <LI>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <LBody>
+ parentStandardType != 'WT'
+
+ <WT> contains <LBody>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <BibEntry>
+ parentStandardType != 'WT'
+
+ <WT> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Table>
+ parentStandardType != 'WT'
+
+ <WT> contains <Table>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <TR>
+ parentStandardType != 'WT'
+
+ <WT> contains <TR>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <TH>
+ parentStandardType != 'WT'
+
+ <WT> contains <TH>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <TD>
+ parentStandardType != 'WT'
+
+ <WT> contains <TD>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <THead>
+ parentStandardType != 'WT'
+
+ <WT> contains <THead>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <TBody>
+ parentStandardType != 'WT'
+
+ <WT> contains <TBody>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <TFoot>
+ parentStandardType != 'WT'
+
+ <WT> contains <TFoot>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Caption>
+ parentStandardType != 'WT'
+
+ <WT> contains <Caption>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Figure>
+ parentStandardType != 'WT'
+
+ <WT> contains <Figure>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Formula>
+ parentStandardType != 'WT'
+
+ <WT> contains <Formula>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Document>
+ parentStandardType != 'WP'
+
+ <WP> contains <Document>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <DocumentFragment>
+ parentStandardType != 'WP'
+
+ <WP> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Part>
+ parentStandardType != 'WP'
+
+ <WP> contains <Part>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Art>
+ parentStandardType != 'WP'
+
+ <WP> contains <Art>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Div>
+ parentStandardType != 'WP'
+
+ <WP> contains <Div>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Sect>
+ parentStandardType != 'WP'
+
+ <WP> contains <Sect>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <TOC>
+ parentStandardType != 'WP'
+
+ <WP> contains <TOC>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <TOCI>
+ parentStandardType != 'WP'
+
+ <WP> contains <TOCI>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Aside>
+ parentStandardType != 'WP'
+
+ <WP> contains <Aside>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <BlockQuote>
+ parentStandardType != 'WP'
+
+ <WP> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <P>
+ parentStandardType != 'WP'
+
+ <WP> contains <P>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Note>
+ parentStandardType != 'WP'
+
+ <WP> contains <Note>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Code>
+ parentStandardType != 'WP'
+
+ <WP> contains <Code>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Hn>
+ parentStandardType != 'WP'
+
+ <WP> contains <Hn>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <H>
+ parentStandardType != 'WP'
+
+ <WP> contains <H>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Title>
+ parentStandardType != 'WP'
+
+ <WP> contains <Title>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Lbl>
+ parentStandardType != 'WP'
+
+ <WP> contains <Lbl>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Ruby>
+ parentStandardType != 'WP'
+
+ <WP> contains <Ruby>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <RB>
+ parentStandardType != 'WP'
+
+ <WP> contains <RB>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <RT>
+ parentStandardType != 'WP'
+
+ <WP> contains <RT>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <RP>
+ parentStandardType != 'WP'
+
+ <WP> contains <RP>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Warichu>
+ parentStandardType != 'WP'
+
+ <WP> contains <Warichu>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <WT>
+ parentStandardType != 'WP'
+
+ <WP> contains <WT>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <WP>
+ parentStandardType != 'WP'
+
+ <WP> contains <WP>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <FENote>
+ parentStandardType != 'WP'
+
+ <WP> contains <FENote>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Index>
+ parentStandardType != 'WP'
+
+ <WP> contains <Index>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <L>
+ parentStandardType != 'WP'
+
+ <WP> contains <L>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <LI>
+ parentStandardType != 'WP'
+
+ <WP> contains <LI>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <LBody>
+ parentStandardType != 'WP'
+
+ <WP> contains <LBody>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <BibEntry>
+ parentStandardType != 'WP'
+
+ <WP> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Table>
+ parentStandardType != 'WP'
+
+ <WP> contains <Table>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <TR>
+ parentStandardType != 'WP'
+
+ <WP> contains <TR>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <TH>
+ parentStandardType != 'WP'
+
+ <WP> contains <TH>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <TD>
+ parentStandardType != 'WP'
+
+ <WP> contains <TD>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <THead>
+ parentStandardType != 'WP'
+
+ <WP> contains <THead>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <TBody>
+ parentStandardType != 'WP'
+
+ <WP> contains <TBody>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <TFoot>
+ parentStandardType != 'WP'
+
+ <WP> contains <TFoot>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Caption>
+ parentStandardType != 'WP'
+
+ <WP> contains <Caption>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Figure>
+ parentStandardType != 'WP'
+
+ <WP> contains <Figure>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Formula>
+ parentStandardType != 'WP'
+
+ <WP> contains <Formula>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <Document>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <Document>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <TOC>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <TOC>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <TOCI>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <TOCI>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <Hn>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <Hn>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <H>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <H>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <Title>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <Title>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <RB>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <RB>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <RT>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <RT>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <RP>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <RP>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <WT>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <WT>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <WP>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <WP>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <Index>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <Index>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <LI>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <LI>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <LBody>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <LBody>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <BibEntry>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <TR>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <TR>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <TH>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <TH>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <TD>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <TD>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <THead>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <THead>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <TBody>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <TBody>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <TFoot>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Document>
+ parentStandardType != 'Index'
+
+ <Index> contains <Document>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <DocumentFragment>
+ parentStandardType != 'Index'
+
+ <Index> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Art>
+ parentStandardType != 'Index'
+
+ <Index> contains <Art>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <TOC>
+ parentStandardType != 'Index'
+
+ <Index> contains <TOC>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <TOCI>
+ parentStandardType != 'Index'
+
+ <Index> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Aside>
+ parentStandardType != 'Index'
+
+ <Index> contains <Aside>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <BlockQuote>
+ parentStandardType != 'Index'
+
+ <Index> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Code>
+ parentStandardType != 'Index'
+
+ <Index> contains <Code>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Title>
+ parentStandardType != 'Index'
+
+ <Index> contains <Title>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Sub>
+ parentStandardType != 'Index'
+
+ <Index> contains <Sub>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Lbl>
+ parentStandardType != 'Index'
+
+ <Index> contains <Lbl>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Em>
+ parentStandardType != 'Index'
+
+ <Index> contains <Em>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Strong>
+ parentStandardType != 'Index'
+
+ <Index> contains <Strong>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Span>
+ parentStandardType != 'Index'
+
+ <Index> contains <Span>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Quote>
+ parentStandardType != 'Index'
+
+ <Index> contains <Quote>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Link>
+ parentStandardType != 'Index'
+
+ <Index> contains <Link>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Form>
+ parentStandardType != 'Index'
+
+ <Index> contains <Form>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Ruby>
+ parentStandardType != 'Index'
+
+ <Index> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <RB>
+ parentStandardType != 'Index'
+
+ <Index> contains <RB>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <RT>
+ parentStandardType != 'Index'
+
+ <Index> contains <RT>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <RP>
+ parentStandardType != 'Index'
+
+ <Index> contains <RP>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Warichu>
+ parentStandardType != 'Index'
+
+ <Index> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <WT>
+ parentStandardType != 'Index'
+
+ <Index> contains <WT>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <WP>
+ parentStandardType != 'Index'
+
+ <Index> contains <WP>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Index>
+ parentStandardType != 'Index'
+
+ <Index> contains <Index>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <LI>
+ parentStandardType != 'Index'
+
+ <Index> contains <LI>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <LBody>
+ parentStandardType != 'Index'
+
+ <Index> contains <LBody>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <BibEntry>
+ parentStandardType != 'Index'
+
+ <Index> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <TR>
+ parentStandardType != 'Index'
+
+ <Index> contains <TR>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <TH>
+ parentStandardType != 'Index'
+
+ <Index> contains <TH>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <TD>
+ parentStandardType != 'Index'
+
+ <Index> contains <TD>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <THead>
+ parentStandardType != 'Index'
+
+ <Index> contains <THead>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <TBody>
+ parentStandardType != 'Index'
+
+ <Index> contains <TBody>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <TFoot>
+ parentStandardType != 'Index'
+
+ <Index> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Index> shall not contain content items
+ hasContentItems == false
+
+ <Index> contains content item(s)
+
+
+
+
+
+
+
+
+ <L> shall not contain <Document>
+ parentStandardType != 'L'
+
+ <L> contains <Document>
+
+
+
+
+
+
+
+
+ <L> shall not contain <DocumentFragment>
+ parentStandardType != 'L'
+
+ <L> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Part>
+ parentStandardType != 'L'
+
+ <L> contains <Part>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Art>
+ parentStandardType != 'L'
+
+ <L> contains <Art>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Div>
+ parentStandardType != 'L'
+
+ <L> contains <Div>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Sect>
+ parentStandardType != 'L'
+
+ <L> contains <Sect>
+
+
+
+
+
+
+
+
+ <L> shall not contain <TOC>
+ parentStandardType != 'L'
+
+ <L> contains <TOC>
+
+
+
+
+
+
+
+
+ <L> shall not contain <TOCI>
+ parentStandardType != 'L'
+
+ <L> contains <TOCI>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Aside>
+ parentStandardType != 'L'
+
+ <L> contains <Aside>
+
+
+
+
+
+
+
+
+ <L> shall not contain <BlockQuote>
+ parentStandardType != 'L'
+
+ <L> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <L> shall not contain <P>
+ parentStandardType != 'L'
+
+ <L> contains <P>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Note>
+ parentStandardType != 'L'
+
+ <L> contains <Note>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Code>
+ parentStandardType != 'L'
+
+ <L> contains <Code>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Hn>
+ parentStandardType != 'L'
+
+ <L> contains <Hn>
+
+
+
+
+
+
+
+
+ <L> shall not contain <H>
+ parentStandardType != 'L'
+
+ <L> contains <H>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Title>
+ parentStandardType != 'L'
+
+ <L> contains <Title>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Sub>
+ parentStandardType != 'L'
+
+ <L> contains <Sub>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Lbl>
+ parentStandardType != 'L'
+
+ <L> contains <Lbl>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Em>
+ parentStandardType != 'L'
+
+ <L> contains <Em>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Strong>
+ parentStandardType != 'L'
+
+ <L> contains <Strong>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Span>
+ parentStandardType != 'L'
+
+ <L> contains <Span>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Quote>
+ parentStandardType != 'L'
+
+ <L> contains <Quote>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Link>
+ parentStandardType != 'L'
+
+ <L> contains <Link>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Reference>
+ parentStandardType != 'L'
+
+ <L> contains <Reference>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Annot>
+ parentStandardType != 'L'
+
+ <L> contains <Annot>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Form>
+ parentStandardType != 'L'
+
+ <L> contains <Form>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Ruby>
+ parentStandardType != 'L'
+
+ <L> contains <Ruby>
+
+
+
+
+
+
+
+
+ <L> shall not contain <RB>
+ parentStandardType != 'L'
+
+ <L> contains <RB>
+
+
+
+
+
+
+
+
+ <L> shall not contain <RT>
+ parentStandardType != 'L'
+
+ <L> contains <RT>
+
+
+
+
+
+
+
+
+ <L> shall not contain <RP>
+ parentStandardType != 'L'
+
+ <L> contains <RP>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Warichu>
+ parentStandardType != 'L'
+
+ <L> contains <Warichu>
+
+
+
+
+
+
+
+
+ <L> shall not contain <WT>
+ parentStandardType != 'L'
+
+ <L> contains <WT>
+
+
+
+
+
+
+
+
+ <L> shall not contain <WP>
+ parentStandardType != 'L'
+
+ <L> contains <WP>
+
+
+
+
+
+
+
+
+ <L> shall not contain <FENote>
+ parentStandardType != 'L'
+
+ <L> contains <FENote>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Index>
+ parentStandardType != 'L'
+
+ <L> contains <Index>
+
+
+
+
+
+
+
+
+ <L> shall not contain <LBody>
+ parentStandardType != 'L'
+
+ <L> contains <LBody>
+
+
+
+
+
+
+
+
+ <L> shall not contain <BibEntry>
+ parentStandardType != 'L'
+
+ <L> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Table>
+ parentStandardType != 'L'
+
+ <L> contains <Table>
+
+
+
+
+
+
+
+
+ <L> shall not contain <TR>
+ parentStandardType != 'L'
+
+ <L> contains <TR>
+
+
+
+
+
+
+
+
+ <L> shall not contain <TH>
+ parentStandardType != 'L'
+
+ <L> contains <TH>
+
+
+
+
+
+
+
+
+ <L> shall not contain <TD>
+ parentStandardType != 'L'
+
+ <L> contains <TD>
+
+
+
+
+
+
+
+
+ <L> shall not contain <THead>
+ parentStandardType != 'L'
+
+ <L> contains <THead>
+
+
+
+
+
+
+
+
+ <L> shall not contain <TBody>
+ parentStandardType != 'L'
+
+ <L> contains <TBody>
+
+
+
+
+
+
+
+
+ <L> shall not contain <TFoot>
+ parentStandardType != 'L'
+
+ <L> contains <TFoot>
+
+
+
+
+
+
+
+
+ <L> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <L> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Figure>
+ parentStandardType != 'L'
+
+ <L> contains <Figure>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Formula>
+ parentStandardType != 'L'
+
+ <L> contains <Formula>
+
+
+
+
+
+
+
+
+ <L> shall not contain content items
+ hasContentItems == false
+
+ <L> contains content item(s)
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Document>
+ parentStandardType != 'LI'
+
+ <LI> contains <Document>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <DocumentFragment>
+ parentStandardType != 'LI'
+
+ <LI> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Part>
+ parentStandardType != 'LI'
+
+ <LI> contains <Part>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Art>
+ parentStandardType != 'LI'
+
+ <LI> contains <Art>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Sect>
+ parentStandardType != 'LI'
+
+ <LI> contains <Sect>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <TOC>
+ parentStandardType != 'LI'
+
+ <LI> contains <TOC>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <TOCI>
+ parentStandardType != 'LI'
+
+ <LI> contains <TOCI>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Aside>
+ parentStandardType != 'LI'
+
+ <LI> contains <Aside>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <BlockQuote>
+ parentStandardType != 'LI'
+
+ <LI> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <P>
+ parentStandardType != 'LI'
+
+ <LI> contains <P>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Note>
+ parentStandardType != 'LI'
+
+ <LI> contains <Note>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Code>
+ parentStandardType != 'LI'
+
+ <LI> contains <Code>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Hn>
+ parentStandardType != 'LI'
+
+ <LI> contains <Hn>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <H>
+ parentStandardType != 'LI'
+
+ <LI> contains <H>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Title>
+ parentStandardType != 'LI'
+
+ <LI> contains <Title>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Sub>
+ parentStandardType != 'LI'
+
+ <LI> contains <Sub>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Em>
+ parentStandardType != 'LI'
+
+ <LI> contains <Em>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Strong>
+ parentStandardType != 'LI'
+
+ <LI> contains <Strong>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Span>
+ parentStandardType != 'LI'
+
+ <LI> contains <Span>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Quote>
+ parentStandardType != 'LI'
+
+ <LI> contains <Quote>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Link>
+ parentStandardType != 'LI'
+
+ <LI> contains <Link>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Reference>
+ parentStandardType != 'LI'
+
+ <LI> contains <Reference>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Annot>
+ parentStandardType != 'LI'
+
+ <LI> contains <Annot>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Form>
+ parentStandardType != 'LI'
+
+ <LI> contains <Form>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Ruby>
+ parentStandardType != 'LI'
+
+ <LI> contains <Ruby>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <RB>
+ parentStandardType != 'LI'
+
+ <LI> contains <RB>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <RT>
+ parentStandardType != 'LI'
+
+ <LI> contains <RT>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <RP>
+ parentStandardType != 'LI'
+
+ <LI> contains <RP>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Warichu>
+ parentStandardType != 'LI'
+
+ <LI> contains <Warichu>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <WT>
+ parentStandardType != 'LI'
+
+ <LI> contains <WT>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <WP>
+ parentStandardType != 'LI'
+
+ <LI> contains <WP>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <FENote>
+ parentStandardType != 'LI'
+
+ <LI> contains <FENote>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Index>
+ parentStandardType != 'LI'
+
+ <LI> contains <Index>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <L>
+ parentStandardType != 'LI'
+
+ <LI> contains <L>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <LI>
+ parentStandardType != 'LI'
+
+ <LI> contains <LI>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <BibEntry>
+ parentStandardType != 'LI'
+
+ <LI> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Table>
+ parentStandardType != 'LI'
+
+ <LI> contains <Table>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <TR>
+ parentStandardType != 'LI'
+
+ <LI> contains <TR>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <TH>
+ parentStandardType != 'LI'
+
+ <LI> contains <TH>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <TD>
+ parentStandardType != 'LI'
+
+ <LI> contains <TD>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <THead>
+ parentStandardType != 'LI'
+
+ <LI> contains <THead>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <TBody>
+ parentStandardType != 'LI'
+
+ <LI> contains <TBody>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <TFoot>
+ parentStandardType != 'LI'
+
+ <LI> contains <TFoot>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Caption>
+ parentStandardType != 'LI'
+
+ <LI> contains <Caption>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Figure>
+ parentStandardType != 'LI'
+
+ <LI> contains <Figure>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Formula>
+ parentStandardType != 'LI'
+
+ <LI> contains <Formula>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <Document>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <Document>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <DocumentFragment>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <TOC>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <TOC>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <TOCI>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <TOCI>
+
+
+
+
+
+
+
+
+ <LBody> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <LBody> contains more than one <H>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <Title>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <Title>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <Lbl>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <Lbl>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <RB>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <RB>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <RT>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <RT>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <RP>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <RP>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <WT>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <WT>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <WP>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <WP>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <LI>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <LI>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <LBody>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <LBody>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <TR>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <TR>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <TH>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <TH>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <TD>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <TD>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <THead>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <THead>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <TBody>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <TBody>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <TFoot>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <TFoot>
+
+
+
+
+
+
+
+
+ <LBody> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <LBody> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Document>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Document>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <DocumentFragment>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Art>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Art>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Sect>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Sect>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <TOC>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <TOC>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <TOCI>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <TOCI>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Aside>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Aside>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <BlockQuote>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Code>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Code>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Hn>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Hn>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <H>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <H>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Title>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Title>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Sub>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Sub>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Quote>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Quote>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Form>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Form>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Ruby>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Ruby>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <RB>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <RB>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <RT>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <RT>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <RP>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <RP>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Warichu>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Warichu>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <WT>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <WT>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <WP>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <WP>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Index>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Index>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <L>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <L>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <LI>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <LI>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <LBody>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <LBody>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <BibEntry>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Table>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Table>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <TR>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <TR>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <TH>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <TH>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <TD>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <TD>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <THead>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <THead>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <TBody>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <TBody>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <TFoot>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <TFoot>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Caption>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Caption>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Formula>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Formula>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Document>
+ parentStandardType != 'Table'
+
+ <Table> contains <Document>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <DocumentFragment>
+ parentStandardType != 'Table'
+
+ <Table> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Part>
+ parentStandardType != 'Table'
+
+ <Table> contains <Part>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Art>
+ parentStandardType != 'Table'
+
+ <Table> contains <Art>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Div>
+ parentStandardType != 'Table'
+
+ <Table> contains <Div>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Sect>
+ parentStandardType != 'Table'
+
+ <Table> contains <Sect>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <TOC>
+ parentStandardType != 'Table'
+
+ <Table> contains <TOC>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <TOCI>
+ parentStandardType != 'Table'
+
+ <Table> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Aside>
+ parentStandardType != 'Table'
+
+ <Table> contains <Aside>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <BlockQuote>
+ parentStandardType != 'Table'
+
+ <Table> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <P>
+ parentStandardType != 'Table'
+
+ <Table> contains <P>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Note>
+ parentStandardType != 'Table'
+
+ <Table> contains <Note>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Code>
+ parentStandardType != 'Table'
+
+ <Table> contains <Code>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Hn>
+ parentStandardType != 'Table'
+
+ <Table> contains <Hn>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <H>
+ parentStandardType != 'Table'
+
+ <Table> contains <H>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Title>
+ parentStandardType != 'Table'
+
+ <Table> contains <Title>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Sub>
+ parentStandardType != 'Table'
+
+ <Table> contains <Sub>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Lbl>
+ parentStandardType != 'Table'
+
+ <Table> contains <Lbl>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Em>
+ parentStandardType != 'Table'
+
+ <Table> contains <Em>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Strong>
+ parentStandardType != 'Table'
+
+ <Table> contains <Strong>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Span>
+ parentStandardType != 'Table'
+
+ <Table> contains <Span>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Quote>
+ parentStandardType != 'Table'
+
+ <Table> contains <Quote>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Link>
+ parentStandardType != 'Table'
+
+ <Table> contains <Link>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Reference>
+ parentStandardType != 'Table'
+
+ <Table> contains <Reference>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Annot>
+ parentStandardType != 'Table'
+
+ <Table> contains <Annot>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Form>
+ parentStandardType != 'Table'
+
+ <Table> contains <Form>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Ruby>
+ parentStandardType != 'Table'
+
+ <Table> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <RB>
+ parentStandardType != 'Table'
+
+ <Table> contains <RB>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <RT>
+ parentStandardType != 'Table'
+
+ <Table> contains <RT>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <RP>
+ parentStandardType != 'Table'
+
+ <Table> contains <RP>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Warichu>
+ parentStandardType != 'Table'
+
+ <Table> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <WT>
+ parentStandardType != 'Table'
+
+ <Table> contains <WT>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <WP>
+ parentStandardType != 'Table'
+
+ <Table> contains <WP>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <FENote>
+ parentStandardType != 'Table'
+
+ <Table> contains <FENote>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Index>
+ parentStandardType != 'Table'
+
+ <Table> contains <Index>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <L>
+ parentStandardType != 'Table'
+
+ <Table> contains <L>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <LI>
+ parentStandardType != 'Table'
+
+ <Table> contains <LI>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <LBody>
+ parentStandardType != 'Table'
+
+ <Table> contains <LBody>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <BibEntry>
+ parentStandardType != 'Table'
+
+ <Table> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Table>
+ parentStandardType != 'Table'
+
+ <Table> contains <Table>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <TH>
+ parentStandardType != 'Table'
+
+ <Table> contains <TH>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <TD>
+ parentStandardType != 'Table'
+
+ <Table> contains <TD>
+
+
+
+
+
+
+
+
+ <Table> shall contain at most one <THead>
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1
+
+ <Table> contains more than one <THead>
+
+
+
+
+
+
+
+
+ <Table> shall contain at most one <TFoot>
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1
+
+ <Table> contains more than one <TFoot>
+
+
+
+
+
+
+
+
+ <Table> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <Table> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Figure>
+ parentStandardType != 'Table'
+
+ <Table> contains <Figure>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Formula>
+ parentStandardType != 'Table'
+
+ <Table> contains <Formula>
+
+
+
+
+
+
+
+
+ <Table> shall not contain content items
+ hasContentItems == false
+
+ <Table> contains content item(s)
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Document>
+ parentStandardType != 'TR'
+
+ <TR> contains <Document>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <DocumentFragment>
+ parentStandardType != 'TR'
+
+ <TR> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Part>
+ parentStandardType != 'TR'
+
+ <TR> contains <Part>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Art>
+ parentStandardType != 'TR'
+
+ <TR> contains <Art>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Div>
+ parentStandardType != 'TR'
+
+ <TR> contains <Div>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Sect>
+ parentStandardType != 'TR'
+
+ <TR> contains <Sect>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <TOC>
+ parentStandardType != 'TR'
+
+ <TR> contains <TOC>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <TOCI>
+ parentStandardType != 'TR'
+
+ <TR> contains <TOCI>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Aside>
+ parentStandardType != 'TR'
+
+ <TR> contains <Aside>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <BlockQuote>
+ parentStandardType != 'TR'
+
+ <TR> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <P>
+ parentStandardType != 'TR'
+
+ <TR> contains <P>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Note>
+ parentStandardType != 'TR'
+
+ <TR> contains <Note>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Code>
+ parentStandardType != 'TR'
+
+ <TR> contains <Code>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Hn>
+ parentStandardType != 'TR'
+
+ <TR> contains <Hn>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <H>
+ parentStandardType != 'TR'
+
+ <TR> contains <H>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Title>
+ parentStandardType != 'TR'
+
+ <TR> contains <Title>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Sub>
+ parentStandardType != 'TR'
+
+ <TR> contains <Sub>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Lbl>
+ parentStandardType != 'TR'
+
+ <TR> contains <Lbl>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Em>
+ parentStandardType != 'TR'
+
+ <TR> contains <Em>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Strong>
+ parentStandardType != 'TR'
+
+ <TR> contains <Strong>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Span>
+ parentStandardType != 'TR'
+
+ <TR> contains <Span>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Quote>
+ parentStandardType != 'TR'
+
+ <TR> contains <Quote>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Link>
+ parentStandardType != 'TR'
+
+ <TR> contains <Link>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Reference>
+ parentStandardType != 'TR'
+
+ <TR> contains <Reference>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Annot>
+ parentStandardType != 'TR'
+
+ <TR> contains <Annot>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Form>
+ parentStandardType != 'TR'
+
+ <TR> contains <Form>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Ruby>
+ parentStandardType != 'TR'
+
+ <TR> contains <Ruby>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <RB>
+ parentStandardType != 'TR'
+
+ <TR> contains <RB>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <RT>
+ parentStandardType != 'TR'
+
+ <TR> contains <RT>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <RP>
+ parentStandardType != 'TR'
+
+ <TR> contains <RP>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Warichu>
+ parentStandardType != 'TR'
+
+ <TR> contains <Warichu>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <WT>
+ parentStandardType != 'TR'
+
+ <TR> contains <WT>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <WP>
+ parentStandardType != 'TR'
+
+ <TR> contains <WP>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <FENote>
+ parentStandardType != 'TR'
+
+ <TR> contains <FENote>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Index>
+ parentStandardType != 'TR'
+
+ <TR> contains <Index>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <L>
+ parentStandardType != 'TR'
+
+ <TR> contains <L>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <LI>
+ parentStandardType != 'TR'
+
+ <TR> contains <LI>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <LBody>
+ parentStandardType != 'TR'
+
+ <TR> contains <LBody>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <BibEntry>
+ parentStandardType != 'TR'
+
+ <TR> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Table>
+ parentStandardType != 'TR'
+
+ <TR> contains <Table>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <TR>
+ parentStandardType != 'TR'
+
+ <TR> contains <TR>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <THead>
+ parentStandardType != 'TR'
+
+ <TR> contains <THead>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <TBody>
+ parentStandardType != 'TR'
+
+ <TR> contains <TBody>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <TFoot>
+ parentStandardType != 'TR'
+
+ <TR> contains <TFoot>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Caption>
+ parentStandardType != 'TR'
+
+ <TR> contains <Caption>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Figure>
+ parentStandardType != 'TR'
+
+ <TR> contains <Figure>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Formula>
+ parentStandardType != 'TR'
+
+ <TR> contains <Formula>
+
+
+
+
+
+
+
+
+ <TR> shall not contain content items
+ hasContentItems == false
+
+ <TR> contains content item(s)
+
+
+
+
+
+
+
+
+ <TH> shall not contain <Document>
+ parentStandardType != 'TH'
+
+ <TH> contains <Document>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <DocumentFragment>
+ parentStandardType != 'TH'
+
+ <TH> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <Part>
+ parentStandardType != 'TH'
+
+ <TH> contains <Part>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <TOC>
+ parentStandardType != 'TH'
+
+ <TH> contains <TOC>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <TOCI>
+ parentStandardType != 'TH'
+
+ <TH> contains <TOCI>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <Aside>
+ parentStandardType != 'TH'
+
+ <TH> contains <Aside>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <BlockQuote>
+ parentStandardType != 'TH'
+
+ <TH> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <TH> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <TH> contains more than one <H>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <Title>
+ parentStandardType != 'TH'
+
+ <TH> contains <Title>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <Sub>
+ parentStandardType != 'TH'
+
+ <TH> contains <Sub>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <RB>
+ parentStandardType != 'TH'
+
+ <TH> contains <RB>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <RT>
+ parentStandardType != 'TH'
+
+ <TH> contains <RT>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <RP>
+ parentStandardType != 'TH'
+
+ <TH> contains <RP>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <WT>
+ parentStandardType != 'TH'
+
+ <TH> contains <WT>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <WP>
+ parentStandardType != 'TH'
+
+ <TH> contains <WP>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <LI>
+ parentStandardType != 'TH'
+
+ <TH> contains <LI>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <LBody>
+ parentStandardType != 'TH'
+
+ <TH> contains <LBody>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <TR>
+ parentStandardType != 'TH'
+
+ <TH> contains <TR>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <TH>
+ parentStandardType != 'TH'
+
+ <TH> contains <TH>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <TD>
+ parentStandardType != 'TH'
+
+ <TH> contains <TD>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <THead>
+ parentStandardType != 'TH'
+
+ <TH> contains <THead>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <TBody>
+ parentStandardType != 'TH'
+
+ <TH> contains <TBody>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <TFoot>
+ parentStandardType != 'TH'
+
+ <TH> contains <TFoot>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <Caption>
+ parentStandardType != 'TH'
+
+ <TH> contains <Caption>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <Document>
+ parentStandardType != 'TD'
+
+ <TD> contains <Document>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <DocumentFragment>
+ parentStandardType != 'TD'
+
+ <TD> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <Part>
+ parentStandardType != 'TD'
+
+ <TD> contains <Part>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <TOC>
+ parentStandardType != 'TD'
+
+ <TD> contains <TOC>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <TOCI>
+ parentStandardType != 'TD'
+
+ <TD> contains <TOCI>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <Aside>
+ parentStandardType != 'TD'
+
+ <TD> contains <Aside>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <BlockQuote>
+ parentStandardType != 'TD'
+
+ <TD> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <TD> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <TD> contains more than one <H>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <Title>
+ parentStandardType != 'TD'
+
+ <TD> contains <Title>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <Sub>
+ parentStandardType != 'TD'
+
+ <TD> contains <Sub>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <RB>
+ parentStandardType != 'TD'
+
+ <TD> contains <RB>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <RT>
+ parentStandardType != 'TD'
+
+ <TD> contains <RT>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <RP>
+ parentStandardType != 'TD'
+
+ <TD> contains <RP>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <WT>
+ parentStandardType != 'TD'
+
+ <TD> contains <WT>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <WP>
+ parentStandardType != 'TD'
+
+ <TD> contains <WP>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <LI>
+ parentStandardType != 'TD'
+
+ <TD> contains <LI>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <LBody>
+ parentStandardType != 'TD'
+
+ <TD> contains <LBody>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <TR>
+ parentStandardType != 'TD'
+
+ <TD> contains <TR>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <TH>
+ parentStandardType != 'TD'
+
+ <TD> contains <TH>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <TD>
+ parentStandardType != 'TD'
+
+ <TD> contains <TD>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <THead>
+ parentStandardType != 'TD'
+
+ <TD> contains <THead>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <TBody>
+ parentStandardType != 'TD'
+
+ <TD> contains <TBody>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <TFoot>
+ parentStandardType != 'TD'
+
+ <TD> contains <TFoot>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <Caption>
+ parentStandardType != 'TD'
+
+ <TD> contains <Caption>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Document>
+ parentStandardType != 'THead'
+
+ <THead> contains <Document>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <DocumentFragment>
+ parentStandardType != 'THead'
+
+ <THead> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Part>
+ parentStandardType != 'THead'
+
+ <THead> contains <Part>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Art>
+ parentStandardType != 'THead'
+
+ <THead> contains <Art>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Div>
+ parentStandardType != 'THead'
+
+ <THead> contains <Div>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Sect>
+ parentStandardType != 'THead'
+
+ <THead> contains <Sect>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <TOC>
+ parentStandardType != 'THead'
+
+ <THead> contains <TOC>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <TOCI>
+ parentStandardType != 'THead'
+
+ <THead> contains <TOCI>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Aside>
+ parentStandardType != 'THead'
+
+ <THead> contains <Aside>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <BlockQuote>
+ parentStandardType != 'THead'
+
+ <THead> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <P>
+ parentStandardType != 'THead'
+
+ <THead> contains <P>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Note>
+ parentStandardType != 'THead'
+
+ <THead> contains <Note>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Code>
+ parentStandardType != 'THead'
+
+ <THead> contains <Code>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Hn>
+ parentStandardType != 'THead'
+
+ <THead> contains <Hn>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <H>
+ parentStandardType != 'THead'
+
+ <THead> contains <H>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Title>
+ parentStandardType != 'THead'
+
+ <THead> contains <Title>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Sub>
+ parentStandardType != 'THead'
+
+ <THead> contains <Sub>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Lbl>
+ parentStandardType != 'THead'
+
+ <THead> contains <Lbl>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Em>
+ parentStandardType != 'THead'
+
+ <THead> contains <Em>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Strong>
+ parentStandardType != 'THead'
+
+ <THead> contains <Strong>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Span>
+ parentStandardType != 'THead'
+
+ <THead> contains <Span>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Quote>
+ parentStandardType != 'THead'
+
+ <THead> contains <Quote>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Link>
+ parentStandardType != 'THead'
+
+ <THead> contains <Link>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Reference>
+ parentStandardType != 'THead'
+
+ <THead> contains <Reference>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Annot>
+ parentStandardType != 'THead'
+
+ <THead> contains <Annot>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Form>
+ parentStandardType != 'THead'
+
+ <THead> contains <Form>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Ruby>
+ parentStandardType != 'THead'
+
+ <THead> contains <Ruby>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <RB>
+ parentStandardType != 'THead'
+
+ <THead> contains <RB>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <RT>
+ parentStandardType != 'THead'
+
+ <THead> contains <RT>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <RP>
+ parentStandardType != 'THead'
+
+ <THead> contains <RP>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Warichu>
+ parentStandardType != 'THead'
+
+ <THead> contains <Warichu>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <WT>
+ parentStandardType != 'THead'
+
+ <THead> contains <WT>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <WP>
+ parentStandardType != 'THead'
+
+ <THead> contains <WP>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <FENote>
+ parentStandardType != 'THead'
+
+ <THead> contains <FENote>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Index>
+ parentStandardType != 'THead'
+
+ <THead> contains <Index>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <L>
+ parentStandardType != 'THead'
+
+ <THead> contains <L>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <LI>
+ parentStandardType != 'THead'
+
+ <THead> contains <LI>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <LBody>
+ parentStandardType != 'THead'
+
+ <THead> contains <LBody>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <BibEntry>
+ parentStandardType != 'THead'
+
+ <THead> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Table>
+ parentStandardType != 'THead'
+
+ <THead> contains <Table>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <TH>
+ parentStandardType != 'THead'
+
+ <THead> contains <TH>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <TD>
+ parentStandardType != 'THead'
+
+ <THead> contains <TD>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <THead>
+ parentStandardType != 'THead'
+
+ <THead> contains <THead>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <TBody>
+ parentStandardType != 'THead'
+
+ <THead> contains <TBody>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <TFoot>
+ parentStandardType != 'THead'
+
+ <THead> contains <TFoot>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Caption>
+ parentStandardType != 'THead'
+
+ <THead> contains <Caption>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Figure>
+ parentStandardType != 'THead'
+
+ <THead> contains <Figure>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Formula>
+ parentStandardType != 'THead'
+
+ <THead> contains <Formula>
+
+
+
+
+
+
+
+
+ <THead> shall not contain content items
+ hasContentItems == false
+
+ <THead> contains content item(s)
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Document>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Document>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <DocumentFragment>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Part>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Part>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Art>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Art>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Div>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Div>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Sect>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Sect>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <TOC>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <TOC>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <TOCI>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <TOCI>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Aside>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Aside>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <BlockQuote>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <P>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <P>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Note>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Note>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Code>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Code>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Hn>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Hn>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <H>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <H>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Title>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Title>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Sub>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Sub>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Lbl>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Lbl>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Em>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Em>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Strong>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Strong>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Span>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Span>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Quote>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Quote>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Link>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Link>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Reference>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Reference>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Annot>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Annot>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Form>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Form>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Ruby>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Ruby>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <RB>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <RB>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <RT>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <RT>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <RP>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <RP>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Warichu>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Warichu>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <WT>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <WT>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <WP>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <WP>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <FENote>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <FENote>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Index>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Index>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <L>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <L>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <LI>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <LI>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <LBody>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <LBody>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <BibEntry>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Table>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Table>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <TH>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <TH>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <TD>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <TD>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <THead>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <THead>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <TBody>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <TBody>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <TFoot>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <TFoot>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Caption>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Caption>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Figure>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Figure>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Formula>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Formula>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain content items
+ hasContentItems == false
+
+ <TBody> contains content item(s)
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Document>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Document>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <DocumentFragment>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Part>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Part>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Art>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Art>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Div>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Div>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Sect>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Sect>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <TOC>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <TOC>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <TOCI>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <TOCI>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Aside>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Aside>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <BlockQuote>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <P>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <P>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Note>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Note>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Code>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Code>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Hn>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Hn>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <H>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <H>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Title>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Title>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Sub>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Sub>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Lbl>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Lbl>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Em>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Em>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Strong>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Strong>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Span>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Span>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Quote>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Quote>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Link>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Link>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Reference>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Reference>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Annot>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Annot>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Form>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Form>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Ruby>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Ruby>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <RB>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <RB>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <RT>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <RT>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <RP>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <RP>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Warichu>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Warichu>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <WT>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <WT>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <WP>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <WP>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <FENote>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <FENote>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Index>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Index>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <L>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <L>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <LI>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <LI>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <LBody>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <LBody>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <BibEntry>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Table>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Table>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <TH>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <TH>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <TD>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <TD>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <THead>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <THead>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <TBody>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <TBody>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <TFoot>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <TFoot>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Caption>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Caption>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Figure>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Figure>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Formula>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Formula>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain content items
+ hasContentItems == false
+
+ <TFoot> contains content item(s)
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <Document>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <Document>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <TOC>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <TOC>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <TOCI>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Caption> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <Caption> contains more than one <H>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <Title>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <Title>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <RB>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <RB>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <RT>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <RT>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <RP>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <RP>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <WT>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <WT>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <WP>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <WP>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <LI>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <LI>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <LBody>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <LBody>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <TR>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <TR>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <TH>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <TH>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <TD>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <TD>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <THead>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <THead>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <TBody>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <TBody>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <TFoot>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <Caption>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <Caption>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <Document>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <Document>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <DocumentFragment>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <TOC>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <TOC>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <TOCI>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Figure> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <Figure> contains more than one <H>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <Title>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <Title>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <RB>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <RB>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <RT>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <RT>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <RP>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <RP>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <WT>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <WT>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <WP>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <WP>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <LI>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <LI>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <LBody>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <LBody>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <TR>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <TR>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <TH>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <TH>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <TD>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <TD>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <THead>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <THead>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <TBody>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <TBody>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <TFoot>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Figure> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <Figure> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <Document>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <Document>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <DocumentFragment>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <Art>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <Art>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <Sect>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <Sect>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <TOC>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <TOC>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <TOCI>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Formula> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <Formula> contains more than one <H>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <Title>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <Title>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <RB>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <RB>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <RT>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <RT>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <RP>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <RP>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <WT>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <WT>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <WP>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <WP>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <LI>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <LI>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <LBody>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <LBody>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <TR>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <TR>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <TH>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <TH>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <TD>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <TD>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <THead>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <THead>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <TBody>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <TBody>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <TFoot>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Formula> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <Formula> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <Artifact> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <Artifact> contains more than one <H>
+
+
+
+
+
+
+
+
+ <Artifact> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <Artifact> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ A circular mapping shall not exist
+ circularMappingExist != true
+
+ A circular mapping exists for %1 structure type
+
+ valueS
+
+
+
+
+
+
+
+
+ Standard tags shall not be remapped to a non-standard type
+ remappedStandardType == null
+
+ The standard structure type %1 is remapped to a non-standard type
+
+ remappedStandardType
+
+
+
+
+
+
+
+
+ The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document catalog dictionary, as described in ISO 32000-2:2020, 14.7
+ StructTreeRoot_size == 1
+
+ StructTreeRoot entry is not present in the document catalog
+
+
+
+
+
+
+
+
+ A structure element dictionary shall contain the P (parent) entry according to ISO 32000-2:2020, 14.7.2, Table 323
+ containsParent == true
+
+ A structure element dictionary does not contain the P (parent) entry
+
+
+
+
+
+
+
+
+ The math structure type shall occur only as a child of a Formula structure element
+ parentStandardType == 'Formula' || parentStandardType == 'MathML'
+
+ The math structure type is nested within %1 tag instead of Formula
+
+ parentStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml
new file mode 100644
index 00000000..dec82aa2
--- /dev/null
+++ b/PDF_UA/PDFUA-1.xml
@@ -0,0 +1,1305 @@
+
+
+
+ PDF/UA-1 validation profile
+ Validation rules against ISO 14289-1:2014
+
+
+
+
+
+ The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema
+ UAIdentification_size == 1
+
+ The document metadata stream doesn't contains PDF/UA Identification Schema
+
+
+
+
+
+
+ The value of "pdfuaid:part" shall be the part number of the International Standard to which the file conforms
+ part == 1
+
+ The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA-1 conforming file
+
+ part
+
+
+
+
+
+
+ Property "part" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
+ partPrefix == null || partPrefix == "pdfuaid"
+
+ Property "part" of the PDF/UA Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+ Property "amd" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
+ amdPrefix == null || amdPrefix == "pdfuaid"
+
+ Property "amd" of the PDF/UA Identification Schema has invalid namespace prefix %1
+
+ amdPrefix
+
+
+
+
+
+
+ Property "corr" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
+ corrPrefix == null || corrPrefix == "pdfuaid"
+
+ Property "corr" of the PDF/UA Identification Schema has invalid namespace prefix %1
+
+ corrPrefix
+
+
+
+
+
+
+ Content marked as Artifact should not present inside tagged content
+ tag != 'Artifact' || isTaggedContent == false
+
+ Content marked as Artifact is present inside tagged content (parent struct element %1)
+
+ parentStructureElementObjectKey
+
+
+
+
+
+
+ Tagged content should not present inside content marked as Artifact
+ isTaggedContent == false || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0
+
+ Tagged content (parent struct element %1) is present inside content marked as Artifact
+
+ parentStructureElementObjectKey
+
+
+
+
+
+
+ Content shall be marked as Artifact or tagged as real content
+ isTaggedContent == true || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0
+
+ Content is neither marked as Artifact nor tagged as real content
+
+
+
+
+
+
+ Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321)
+ Suspects != true
+
+ Suspects entry has a value of true
+
+
+
+
+
+
+
+
+ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type
+ isNotMappedToStandardType == false
+
+ Non-standard structure type %1 is not mapped to a standard type
+
+ valueS
+
+
+
+
+
+
+
+
+ A circular mapping shall not exist
+ circularMappingExist != true
+
+ A circular mapping exists for %1 structure type
+
+ valueS
+
+
+
+
+
+
+ Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped
+ remappedStandardType == null
+
+ Standard type %1 is remapped
+
+ remappedStandardType
+
+
+
+
+
+
+
+
+ The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2
+ metadata_size == 1
+
+ The document catalog dictionary doesn't contain metadata key
+
+
+
+
+
+
+
+
+ The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which clearly identifies the document
+ dc_title != null
+
+ Metadata stream does not contain dc:title
+
+
+
+
+
+
+ The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true
+ DisplayDocTitle == true
+
+ ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, DisplayDocTitle = %2)
+
+ ViewerPreferences
+ DisplayDocTitle
+
+
+
+
+
+
+ The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document catalog dictionary, as described in ISO 32000-1:2008, 14.7
+ StructTreeRoot_size == 1
+
+ StructTreeRoot entry is not present in the document catalog
+
+
+
+
+
+
+
+
+ A structure element dictionary shall contain the P (parent) entry according to ISO 32000-1:2008, 14.7.2, Table 355
+ containsParent == true
+
+ A structure element dictionary does not contain the P (parent) entry
+
+
+
+
+
+
+
+
+ Natural language in the Outline entries shall be determined
+ gSizeCatalogLang != 0
+
+ Natural language in the Outline entries cannot be determined
+
+
+
+
+
+
+ Table element may contain only TR, THead, TBody, TFoot and Caption elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == ''
+
+ Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead'
+ && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString()
+
+
+
+
+
+
+
+
+ TR element should be contained in Table, THead, TBody or TFoot element
+ /^(Table|THead|TBody|TFoot)$/.test(parentStandardType)
+
+ TR element contained in %1 instead of Table, THead, TBody or TFoot element
+
+ parentStandardType
+
+
+
+
+
+
+
+
+ THead element should be contained in Table element
+ parentStandardType == 'Table'
+
+ THead element contained in %1 instead of Table element
+
+ parentStandardType
+
+
+
+
+
+
+
+
+ TBody element should be contained in Table element
+ parentStandardType == 'Table'
+
+ TBody element contained in %1 instead of Table element
+
+ parentStandardType
+
+
+
+
+
+
+
+
+ TFoot element should be contained in Table element
+ parentStandardType == 'Table'
+
+ TFoot element contained in %1 instead of Table element
+
+ parentStandardType
+
+
+
+
+
+
+
+
+ TH element should be contained in TR element
+ parentStandardType == 'TR'
+
+ TH element contained in %1 instead of TR element
+
+ parentStandardType
+
+
+
+
+
+
+
+
+ TD element should be contained in TR element
+ parentStandardType == 'TR'
+
+ TD element contained in %1 instead of TR element
+
+ parentStandardType
+
+
+
+
+
+
+
+
+ TR element may contain only TH and TD elements
+ /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == ''
+
+ TR element contains %1 element(s) instead of TH or TD
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString()
+
+
+
+
+
+
+
+
+ Table element should contain zero or one THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1
+
+ Table element contains more than one THead kid
+
+
+
+
+
+
+
+
+ Table element should contain zero or one TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1
+
+ Table element contains more than one TFoot kid
+
+
+
+
+
+
+
+
+ If Table element contains TFoot kid, Table element should contain one or more TBody kids
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0
+
+ Table element contains TFoot kid, but does not contain TBody kids
+
+
+
+
+
+
+
+
+ If Table element contains THead kid, Table element should contain one or more TBody kids
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0
+
+ Table element contains THead kid, but does not contain TBody kids
+
+
+
+
+
+
+
+
+ A table cell shall not have intersection with other cells
+ hasIntersection != true
+
+ Table cell has intersection with other cells
+
+
+
+
+
+
+
+
+ Table element may contain a Caption element as its first or last kid
+ kidsStandardTypes.indexOf('&Caption&') < 0
+
+ Table element contains Caption as its %1 child instead of first or last one
+
+ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2
+
+
+
+
+
+
+
+
+ LI element should be contained in L element
+ parentStandardType == 'L'
+
+ LI element contained in %1 instead of L element
+
+ parentStandardType
+
+
+
+
+
+
+
+
+ LBody element should be contained in LI element
+ parentStandardType == 'LI'
+
+ LBody element contained in %1 instead of LI element
+
+ parentStandardType
+
+
+
+
+
+
+
+
+ L element may contain only L, LI and Caption elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' && elem != 'Caption').length == 0 || kidsStandardTypes == ''
+
+ L element contains %1 element(s) instead of L, LI or Caption
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI'
+ && elem != 'Caption').toString()
+
+
+
+
+
+
+
+
+ LI element may contain only Lbl and LBody elements
+ /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == ''
+
+ LI element contains %1 element(s) instead of Lbl or LBody
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString()
+
+
+
+
+
+
+
+
+ Natural language for text in ActualText attribute shall be determined
+ ActualText == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in ActualText attribute cannot be determined
+
+
+
+
+
+
+ Natural language for text in Alt attribute shall be determined
+ Alt == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in Alt attribute cannot be determined
+
+
+
+
+
+
+ Natural language for text in E attribute shall be determined
+ E == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in E attribute cannot be determined
+
+
+
+
+
+
+ Natural language in the Contents entry for annotations shall be determined
+ Contents == null || Lang_size != 0 || gSizeCatalogLang != 0
+
+ Natural language in the Contents entry for annotations cannot be determined
+
+
+
+
+
+
+ Natural language in the TU key for form fields shall be determined
+ TU == null || Lang_size != 0 || gSizeCatalogLang != 0
+
+ Natural language in the TU key for form fields cannot be determined
+
+
+
+
+
+
+ TOCI element should be contained in TOC element
+ parentStandardType == 'TOC'
+
+ TOCI element contained in %1 instead of TOC element
+
+ parentStandardType
+
+
+
+
+
+
+
+
+ TOC element may contain only TOC, TOCI and Caption elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' && elem != 'Caption').length == 0 || kidsStandardTypes == ''
+
+ TOC element contains %1 element(s) instead of TOC, TOCI or Caption
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI'
+ && elem != 'Caption').toString()
+
+
+
+
+
+
+
+
+ TOC element may contain a Caption element only as its first kid
+ kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0
+
+ TOC element contains Caption as its %1 child instead of first one
+
+ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2
+
+
+
+
+
+
+
+
+ If the Lang entry is present in the document's Catalog dictionary or in a structure element dictionary or property list, its value shall be a language identifier as described in ISO 32000-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages
+ /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue)
+
+ Value %1 of the Lang entry is not a Language-Tag
+
+ unicodeValue
+
+
+
+
+
+
+
+
+
+ Natural language for text in ActualText attribute in Span Marked Content shall be determined
+ tag != 'Span' || ActualText == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in ActualText attribute in Span Marked Content cannot be determined
+
+
+
+
+
+
+ Natural language for text in Alt attribute in Span Marked Content shall be determined
+ tag != 'Span' || Alt == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in Alt attribute in Span Marked Content cannot be determined
+
+
+
+
+
+
+ Natural language for text in E attribute in Span Marked Content shall be determined
+ tag != 'Span' || E == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in E attribute in Span Marked Content cannot be determined
+
+
+
+
+
+
+ Natural language for document metadata shall be determined
+ xDefault == false || gSizeCatalogLang != 0
+
+ Natural language for document metadata cannot be determined
+
+
+
+
+
+
+ Natural language for text in page content shall be determined
+ gSizeCatalogLang != 0 || Lang != null
+
+ Natural language for text in page content cannot be determined
+
+
+
+
+
+
+ THead element may contain only TR elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == ''
+
+ THead element contains %1 element(s) instead of TR
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString()
+
+
+
+
+
+
+
+
+ TBody element may contain only TR elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == ''
+
+ TBody element contains %1 element(s) instead of TR
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString()
+
+
+
+
+
+
+
+
+ TFoot element may contain only TR elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == ''
+
+ TFoot element contains %1 element(s) instead of TR
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString()
+
+
+
+
+
+
+
+
+ Table element may contain only one Caption element
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2
+
+ Table element contains %1 Caption elements instead of one
+
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length
+
+
+
+
+
+
+
+
+ L element may contain a Caption element only as its first kid
+ kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0
+
+ L element contains Caption as its %1 child instead of first one
+
+ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2
+
+
+
+
+
+
+
+
+ Table columns shall have the same number of rows (taking into account row spans)
+ numberOfColumnWithWrongRowSpan == null
+
+ Table columns 1 and %1 span different number of rows
+
+ numberOfColumnWithWrongRowSpan + 1
+
+
+
+
+
+
+
+
+ Table rows shall have the same number of columns (taking into account column spans)
+ numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null
+
+ Table rows 1 and %1 span different number of columns
+
+ numberOfRowWithWrongColumnSpan + 1
+
+
+
+
+
+
+
+
+ Table rows shall have the same number of columns (taking into account column spans)
+ numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null
+
+ Table rows 1 and %1 span different number of columns (%2 and %3 respectively)
+
+ numberOfRowWithWrongColumnSpan + 1
+ columnSpan
+ wrongColumnSpan
+
+
+
+
+
+
+
+
+ Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323
+ (Alt != null && Alt != '') || ActualText != null
+
+ Figure structure element neither has an alternate description nor a replacement text
+
+
+
+
+
+
+
+
+ For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, heading tags shall be used as follows: (*) If any heading tags are used, H1 shall be the first. (*) A document may use more than one instance of any specific tag level. For example, a tag level may be repeated if document content requires it. (*) If document semantics require a descending sequence of headers, such a sequence shall proceed in strict numerical order and shall not skip an intervening heading level. (*) A document may increment its heading sequence without restarting at H1 if document semantics require it
+ hasCorrectNestingLevel == true
+
+ Heading level %1 is skipped in a descending sequence of header levels
+
+ nestingLevel - 1
+
+
+
+
+
+
+
+
+ Each node in the tag tree shall contain at most one child H tag
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ A node contains more than one H tag
+
+
+
+
+
+
+ All documents shall be either strongly or weakly structured, but not both
+ usesHn == false
+
+ Document uses both H and H# tags
+
+
+
+
+
+
+ All documents shall be either strongly or weakly structured, but not both
+ usesH == false
+
+ Document uses both H and H# tags
+
+
+
+
+
+
+ If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute
+ hasConnectedHeader != false || unknownHeaders != ''
+
+ TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically
+
+
+
+
+
+
+
+
+ If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute
+ hasConnectedHeader != false || unknownHeaders == ''
+
+ TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically
+
+ unknownHeaders
+
+
+
+
+
+
+
+
+ All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, 14.8.4.5 and shall have Alt or ActualText attributes
+ (Alt != null && Alt != '') || ActualText != null
+
+ Formula structure element neither has an alternate description nor a replacement text
+
+
+
+
+
+
+
+
+ Note tag shall have ID entry
+ noteID != null && noteID != ''
+
+ ID key of the Note tag is not present
+
+
+
+
+
+
+ Each Note tag shall have unique ID key
+ hasDuplicateNoteID == false
+
+ ID key %1 of the Note tag is non-unique
+
+ noteID
+
+
+
+
+
+
+ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key
+ Name != null && Name.length() > 0
+
+ Missing or empty Name entry of the optional content configuration dictionary
+
+
+
+
+
+
+ The AS key shall not appear in any optional content configuration dictionary
+ AS == null
+
+ AS key is present in the optional content configuration dictionary
+
+
+
+
+
+
+ The file specification dictionary for an embedded file shall contain the non-empty F and UF keys
+ containsEF == false || (F != null && F != '' && UF != null && UF != '')
+
+ The file specification dictionary for an embedded file does not contain either F or UF key or at least one of the keys is empty (F = %1, UF = %2)
+
+ F
+ UF
+
+
+
+
+
+
+ Dynamic XFA forms shall not be used
+ dynamicRender != 'required'
+
+ Dynamic XFA forms is present
+
+
+
+
+
+
+ An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, 7.6.3.2, Table 21). The 10th bit position of the P key shall be true
+ P != null && (P & 512) == 512
+
+ The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false (P = %1, 10th bit = %2)
+
+ P
+ P != null ? (P & 512) >> 9 : null
+
+
+
+
+
+
+
+
+ An annotation, excluding annotations of subtype Widget, PrinterMark or Link, shall be nested within an Annot tag
+ Subtype == 'Widget' || Subtype == 'PrinterMark' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot'
+
+ %1 annotation is an Artifact or is nested within %2 tag (standard type = %3) instead of Annot
+
+ Subtype
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+ An annotation (except Widget annotations or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element
+ Subtype == 'Widget' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '')
+
+ %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box has neither Contents key nor an Alt entry in the enclosing structure element
+
+ Subtype
+
+
+
+
+
+
+ A form field shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements)
+ isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '')
+
+ A form field neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt entry in the enclosing structure element)
+
+
+
+
+
+
+ Annotations of subtype TrapNet shall not be permitted
+ isOutsideCropBox == true || (F & 2) == 2
+
+ An annotation of subtype TrapNet exists
+
+
+
+
+
+
+ Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S
+ annots_size == 0 || Tabs == 'S'
+
+ A page with annotation(s) contains Tabs key with value %1 instead of S
+
+ Tabs
+
+
+
+
+
+
+ A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340
+ structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2
+
+ A Widget annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Form
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
+
+ If the Form element omits a Role attribute (Table 348), it shall have only one child: an object reference (14.7.4.3) identifying the widget annotation per ISO 32000-1:2008, 14.8.4.5, Table 340
+ roleAttribute != null || hasOneInteractiveChild == true
+
+ The Form element omits a Role attribute and doesn't have only one child identifying the widget annotation
+
+
+
+
+
+
+
+
+ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element
+ structParentStandardType == 'Link' || isOutsideCropBox == true || (F & 2) == 2
+
+ A Link annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Link
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
+
+ Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3
+ (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2
+
+ A link annotation does not include an alternate description in the Contents Key
+
+
+
+
+
+
+
+
+ In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required
+ CT != null
+
+ CT key is missing from the media clip data dictionary
+
+
+
+
+
+
+
+
+ In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required
+ hasCorrectAlt == true
+
+ Alt key (value %1) is missing from the media clip data dictionary or has incorrect value
+
+ Alt
+
+
+
+
+
+
+
+
+ PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3
+ structParentType == null || isOutsideCropBox == true || (F & 2) == 2
+
+ A PrinterMark annotation is included in logical structure
+
+
+
+
+
+
+
+
+ A conforming file shall not contain any reference XObjects
+ containsRef == false
+
+ The document contains a reference XObject (Ref key in the form XObject dictionary)
+
+
+
+
+
+
+ The content of Form XObjects shall be incorporated into structure elements according to ISO 32000-1:2008, 14.7.2
+ isUniqueSemanticParent == true
+
+ Form XObject contains MCIDs and is referenced more than once
+
+
+
+
+
+
+
+
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary shall have the following relationship: - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement)
+
+ CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+ CIDFontSupplement
+ CMapSupplement
+
+
+
+
+
+
+ ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-1:2008, 9.7.4, Table 117
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+ All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1
+
+ A non-standard CMap %1 is not embedded
+
+ CMapName
+
+
+
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V"
+
+ A CMap references another non-standard CMap %1
+
+ CMapName
+
+
+
+
+
+
+
+
+ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced solely in text rendering mode 3 is not rendered and is thus exempt from the requirements that impact the visual representation of the glyphs of a font. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true
+
+ A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program
+
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true
+
+ A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset
+
+
+
+
+
+
+ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out
+ isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0)
+
+ The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries
+
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the dictionary which is the value of the Encoding key in the Font dictionary. In addition, no non-symbolic TrueType font shall define a Differences array unless all of the glyph names in the Differences array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' table
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+ The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding
+ isSymbolic == false || nrCmaps == 1 || cmap30Present == true
+
+ The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0)
+
+ nrCmaps
+
+
+
+
+
+
+ The Font dictionary of all fonts shall define the map of all used character codes to Unicode values, either via a ToUnicode entry, or other mechanisms as defined in ISO 14289-1, 7.21.7
+ toUnicode != null
+
+ The glyph can not be mapped to Unicode
+
+
+
+
+
+
+
+
+ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE
+ toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1)
+
+ The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard
+
+
+
+
+
+
+ A PDF/UA compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators, regardless of text rendering mode, in any content stream
+ name != ".notdef"
+
+ The document contains a reference to the .notdef glyph
+
+
+
+
+
+
+
+ 0
+ Lang_size
+
+
+ false
+ true
+
+
+ false
+ true
+
+
+
diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml
new file mode 100644
index 00000000..73381c8a
--- /dev/null
+++ b/PDF_UA/PDFUA-2-ISO32005.xml
@@ -0,0 +1,20973 @@
+
+
+
+ PDF/UA-2 + Tagged PDF validation profile
+ Validation rules against ISO 14289-2:2024 and ISO 32005
+
+
+
+
+
+ The PDF/UA version of a file shall be specified in the value of the Metadata entry in the document catalog using the PDF/UA identification schema
+ UAIdentification_size == 1
+
+ The document metadata stream doesn't contains PDF/UA Identification Schema
+
+
+
+
+
+
+ The value of "pdfuaid:part" shall be the part number of the International Standard to which the file conforms
+ part == 2
+
+ The "part" property of the PDF/UA Identification Schema is %1 instead of 2 for PDF/UA-2 conforming file
+
+ part
+
+
+
+
+
+
+ Property "part" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
+ partPrefix == null || partPrefix == "pdfuaid"
+
+ Property "part" of the PDF/UA Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+ Property "rev" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
+ revPrefix == null || revPrefix == "pdfuaid"
+
+ Property "rev" of the PDF/UA Identification Schema has invalid namespace prefix %1
+
+ revPrefix
+
+
+
+
+
+
+ The value of "pdfuaid:rev" shall be the four digit year
+ /^\d{4}$/.test(rev)
+
+ The value of "pdfuaid:rev" (%1) is not the four digit year
+
+ rev
+
+
+
+
+
+
+ The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document catalog dictionary, as described in ISO 32000-2:2020, 14.7
+ StructTreeRoot_size == 1
+
+ StructTreeRoot entry is not present in the document catalog
+
+
+
+
+
+
+
+
+ A structure element dictionary shall contain the P (parent) entry according to ISO 32000-2:2020, 14.7.2, Table 323
+ containsParent == true
+
+ A structure element dictionary does not contain the P (parent) entry
+
+
+
+
+
+
+
+
+ Content that is not considered real shall be an artifact
+ isTaggedContent == true || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0
+
+ Content is neither marked as Artifact nor tagged as real content
+
+
+
+
+
+
+ All structure elements shall belong to, or be role mapped to, at least one of the following namespaces specified in ISO 32000-2:2020, 14.8.6: — the PDF 1.7 namespace; — the PDF 2.0 namespace; — the MathML namespace
+ isNotMappedToStandardType == false
+
+ Non-standard structure type %1 is not mapped to a standard type
+
+ valueS
+
+
+
+
+
+
+
+
+ A circular mapping shall not exist
+ circularMappingExist != true
+
+ A circular mapping exists for %1 structure type
+
+ valueS
+
+
+
+
+
+
+ Within a given explicitly provided namespace, structure types shall not be role mapped to other structure types in the same namespace
+ roleMapToSameNamespaceTag == null
+
+ Structure type %1 is role mapped to other structure type in the same namespace
+
+ roleMapToSameNamespaceTag
+
+
+
+
+
+
+ All structure elements shall belong to, or be role mapped to, at least one of the following namespaces specified in ISO 32000-2:2020, 14.8.6: — the PDF 1.7 namespace; — the PDF 2.0 namespace; — the MathML namespace
+ remappedStandardType == null
+
+ The standard structure type %1 is remapped to a non-standard type
+
+ remappedStandardType
+
+
+
+
+
+
+
+
+ The structure tree root shall contain a single Document structure element as its only child, as specified in ISO 32000-2:2020, Annex L and ISO/TS 32005
+ kidsStandardTypes == 'Document'
+
+ The structure tree root contains %1 element(s) instead of a single Document structure element
+
+ kidsStandardTypes.replaceAll('&', ',')
+
+
+
+
+
+
+
+
+
+
+
+ The structure tree root shall contain a single Document structure element as its only child. The namespace for that element shall be specified as the PDF 2.0 namespace
+ kidsStandardTypes != 'Document' || firstChildStandardTypeNamespaceURL == 'http://iso.org/pdf2/ssn'
+
+ The structure tree root contains a single Document structure element, but this element is not within the PDF 2.0 namespace (namespace URI = %1)
+
+ firstChildStandardTypeNamespaceURL
+
+
+
+
+
+
+
+
+
+
+
+ Each TOCI in the table of contents shall identify the target of the reference using the Ref entry, either directly on the TOCI structure element itself or on one of its child structure elements
+ containsRef == true
+
+ TOCI in the TOC does not contain the Ref entry, neither directly on the TOCI structure element itself nor on its descendant structure elements
+
+
+
+
+
+
+ Conforming files shall not use the H structure type
+ false
+
+ Document uses H structure type
+
+
+
+
+
+
+ The Note standard structure type shall not be present in conforming documents unless role mapped to a structure element in the PDF 2.0 namespace
+ false
+
+ Document uses Note structure type
+
+
+
+
+
+
+ Real content that refers to footnotes or endnotes (real content enclosed in FENote structure elements) shall use the Ref entry on the referring structure element to reference the FENote. The corresponding FENote shall also use the Ref entry to identify all citations that reference it
+ orphanRefs == null
+
+ Ref entry in the FENote does not reference structure elements with object numbers %1, while these structure elements reference this FENote
+
+ orphanRefs
+
+
+
+
+
+
+ Real content that refers to footnotes or endnotes (real content enclosed in FENote structure elements) shall use the Ref entry on the referring structure element to reference the FENote. The corresponding FENote shall also use the Ref entry to identify all citations that reference it
+ ghostRefs == null
+
+ Ref entry in the FENote reference structure elements with object numbers %1, while these structure elements do not reference this FENote
+
+ ghostRefs
+
+
+
+
+
+
+ The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None
+ NoteType == 'Footnote' || NoteType == 'Endnote' || NoteType == 'None'
+
+ NoteType attribute of the FENote structure element has value %1 instead of Footnote, Endnote or None
+
+ NoteType
+
+
+
+
+
+
+ A link annotation and its associated content shall be enclosed in either a Link or Reference structure element
+ structParentStandardType == 'Link' || structParentStandardType == 'Reference'
+
+ A Link annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Link or Reference
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+ Link annotations that target different locations shall be in separate Link or Reference structure elements
+ differentTargetAnnotObjectKey == null
+
+ Struct element %1 contains Link annotations %1 and %2 that target different locations
+
+ structParentObjectKey
+ objectKey
+ differentTargetAnnotObjectKey
+
+
+
+
+
+
+ Multiple link annotations shall be included in a single Link or Reference structure element if they target the same location and are semantically perceived to be a single link
+ sameTargetAnnotObjectKey == null
+
+ Annotations %1 and %2 target the same location, but are included into different structure elements
+
+ objectKey
+ sameTargetAnnotObjectKey
+
+
+
+
+
+
+ A Ruby structure element shall contain a single RB structure element and a single RT structure element or a Ruby structure element shall consist of a four-element subsequence: RB, RP, RT, RP
+ kidsStandardTypes == 'RB&RT' || kidsStandardTypes == 'RB&RP&RT&RP'
+
+ The Ruby structure element has invalid sequence of children: %1
+
+ kidsStandardTypes.split('&').toString()
+
+
+
+
+
+
+ Content typeset as warichu shall be tagged in a three-element sequence consisting of the structure elements WP, WT and WP, grouped inside a Warichu structure element
+ kidsStandardTypes == 'WP&WT&WP'
+
+ The Warichu structure element has invalid sequence of children: %1
+
+ kidsStandardTypes.split('&').toString()
+
+
+
+
+
+
+ If Lbl structure elements are present, the ListNumbering attribute shall be present on the respective L structure element; in such cases the value None shall not be used
+ containsLabels == false || ListNumbering != 'None'
+
+ List items contain Lbl structure elements, but the ListNumbering attribute is not present on the respective L structure element or it has value None
+
+
+
+
+
+
+
+
+ Any real content within an LI structure element that is not enclosed in an Lbl structure element shall be enclosed in an LBody structure element
+ hasContentItems == false
+
+ The LI structure element contains real content as its direct child instead of enclosing it into Lbl or LBody structure elements
+
+
+
+
+
+
+ Tables shall be regular. A table cell shall not have intersection with other cells
+ hasIntersection != true
+
+ Table cell has intersection with other cells
+
+
+
+
+
+
+ Tables shall be regular. Row groupings formed by THead, TBody and TFoot structure elements shall be regular. Table columns shall have the same number of rows (taking into account row spans) in table and each row groupings formed by THead, TBody and TFoot structure elements
+ numberOfColumnWithWrongRowSpan == null
+
+ Columns 1 and %1 span different number of rows in table, or within one of row groupings formed by THead, TBody and TFoot structure elements
+
+ numberOfColumnWithWrongRowSpan + 1
+
+
+
+
+
+
+ Tables shall be regular. Table rows shall have the same number of columns (taking into account column spans)
+ numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null
+
+ Table rows 1 and %1 span different number of columns
+
+ numberOfRowWithWrongColumnSpan + 1
+
+
+
+
+
+
+ Tables shall be regular. Table rows shall have the same number of columns (taking into account column spans)
+ numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null
+
+ Table rows 1 and %1 span different number of columns (%2 and %3 respectively)
+
+ numberOfRowWithWrongColumnSpan + 1
+ columnSpan
+ wrongColumnSpan
+
+
+
+
+
+
+ When a table contains header cells, that table shall provide sufficient semantic information to allow accurate determination of which of its table header cells (structure element TH) pertain to other cells as specified in ISO 32000-2:2020, 14.8.5.7
+ hasConnectedHeader != false || unknownHeaders != ''
+
+ TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically
+
+
+
+
+
+
+
+
+
+ When a table contains header cells, that table shall provide sufficient semantic information to allow accurate determination of which of its table header cells (structure element TH) pertain to other cells as specified in ISO 32000-2:2020, 14.8.5.7
+ hasConnectedHeader != false || unknownHeaders == ''
+
+ TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically
+
+ unknownHeaders
+
+
+
+
+
+
+
+
+
+ When present, the Caption element shall be the first or the last child of the structure element
+ kidsStandardTypes.indexOf('&Caption&') < 0
+
+ Structure element %1 contains Caption as its %2 child instead of first or last one
+
+ objectKey
+ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2
+
+
+
+
+
+
+ A Figure structure element shall have at least one of the following properties: a) an alternate description (Alt property), as specified in ISO 32000-2:2020, 14.9.3; b) a replacement text (ActualText property) that represents the content enclosed by the Figure structure element
+ Alt != null || ActualText != null
+
+ Figure structure element neither has an alternate description nor a replacement text
+
+
+
+
+
+
+
+
+ The math structure type shall occur only as a child of a Formula structure element
+ parentStandardType == 'Formula' || parentStandardType == 'MathML'
+
+ The math structure type is nested within %1 tag instead of Formula
+
+ parentStandardType
+
+
+
+
+
+
+ In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present
+ isRealContent == false || unicodePUA == false || actualTextPresent == true || altPresent == true
+
+ Real content maps to Unicode PUA values, but ActualText and Alt entry are not present
+
+
+
+
+
+
+ The ActualText entry shall not contain any PUA values
+ containsPUA == false
+
+ The ActualText entry contains Unicode PUA (Private Use Area) code points
+
+
+
+
+
+
+ The Alt entry shall not contain any PUA values
+ containsPUA == false
+
+ The Alt entry contains Unicode PUA (Private Use Area) code points
+
+
+
+
+
+
+ The default natural language for content and text strings shall be specified using the Lang entry, with a non-empty value, in the catalog dictionary
+ Lang_size > 0
+
+ Catalog dictionary does not contain Lang entry
+
+
+
+
+
+
+ If the Lang entry is present in the document's Catalog dictionary or in a structure element dictionary or property list, its value shall be a language identifier as described in ISO 32000-2:2020, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages
+ /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue)
+
+ Value %1 of the Lang entry is not a Language-Tag
+
+ unicodeValue
+
+
+
+
+
+
+
+
+
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary shall have the following relationship: - If the Encoding key in the Type 0 font dictionary has a value of Identity-H or Identity-V, then any values for the Registry, Ordering, and Supplement keys may be used in the CIDSystemInfo dictionary of the CIDFont. - Otherwise the corresponding values of the Registry and Ordering keys in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement)
+
+ CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+ CIDFontSupplement
+ CMapSupplement
+
+
+
+
+
+
+ All embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-2:2020, Table 115
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+ All CMaps used within a file that conforms to PDF/UA-2, except those listed in ISO 32000-2:2020, Table 116, shall be embedded in that file, as described in ISO 32000-2:2020, 9.7.5
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1
+
+ A non-standard CMap %1 is not embedded
+
+ CMapName
+
+
+
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+ A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V"
+
+ A CMap references another non-standard CMap %1
+
+ CMapName
+
+
+
+
+
+
+
+
+ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-2:2020, 9.9
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced solely in text rendering mode 3 is not rendered and is thus exempt from the requirements that impact the visual representation of the glyphs of a font. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs in accordance with ISO 32000-2:2020, 9.6.5, without the use of a non-standard mapping chosen by the conforming processor
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
+
+
+ For every font embedded in a conforming file and referenced for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent for every glyph
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain at least Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1), or Macintosh Roman (1,0 – Platform ID=1, Encoding ID=0) 'cmap' subtable
+ isSymbolic == true || cmap31Present == true || cmap10Present == true
+
+ The embedded font program for a non-symbolic TrueType font does not contain Microsoft Symbol (3,1 – Platform ID=3, Encoding ID=1) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding
+
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the dictionary which is the value of the Encoding key in the Font dictionary. In addition, no non-symbolic TrueType font shall define a Differences array unless all of the glyph names in the Differences array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' table
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+ The 'cmap' subtable in the embedded font program shall either contain the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=1) encoding
+ isSymbolic == false || cmap30Present == true || cmap10Present == true
+
+ The embedded font program for a symbolic TrueType font does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding
+
+
+
+
+
+
+ The Font dictionary of all fonts shall define the map of all used character codes to Unicode values, either via a ToUnicode entry, or other mechanisms as defined in ISO 14289-2, 8.4.5.8
+ toUnicode != null
+
+ The glyph can not be mapped to Unicode
+
+
+
+
+
+
+
+
+
+ If a ToUnicode CMap is present, the Unicode values it specifies shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE
+ toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1)
+
+ The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard
+
+
+
+
+
+
+ A file in conformance with PDF/UA-2 shall not contain a reference to the .notdef glyph from any of the text showing operators, regardless of text rendering mode, in any content stream
+ name != ".notdef"
+
+ The document contains a reference to the .notdef glyph
+
+
+
+
+
+
+
+
+ Text strings intended to be human readable shall not use the Unicode PUA
+ containsPUA == false
+
+ Text string intended to be human readable uses Unicode PUA
+
+
+
+
+
+
+
+
+ All optional content configuration dictionaries in the document, including the default optional content configuration dictionary, shall contain a Name entry (see ISO 32000-2:2020, Table 96) whose value is a non-empty text string when: a) a document contains a Configs entry in the OCProperties entry of the catalog dictionary (see ISO 32000-2:2020, Table 29), and b) the Configs entry contains at least one optional content configuration dictionary
+ gContainsConfigs == false || (Name != null && Name.length() > 0)
+
+ Missing or empty Name entry of the optional content configuration dictionary
+
+
+
+
+
+
+
+
+
+ The AS key shall not appear in any optional content configuration dictionary
+ AS == null
+
+ AS key is present in the optional content configuration dictionary
+
+
+
+
+
+
+ All destinations whose target lies within the current document shall be structure destinations
+ isStructDestination == true
+
+ Destination in Outline item, OpenAction or Link annotation is not a structure destination
+
+
+
+
+
+
+
+
+
+ All destinations whose target lies within the current document shall be structure destinations
+ containsStructDestination == true
+
+ Destination in GoTo action is not a structure destination
+
+
+
+
+
+
+
+
+
+ Annotations shall be artifacts, if the Invisible flag is set in accordance with ISO 32000-2:2020, Table 167
+ structParentType == null || isArtifact == true || (F & 1) == 0
+
+ An invisible annotation is included in logical structure with tag %1 (standard type = %2, Invisible = %3)
+
+ structParentType
+ structParentStandardType
+ F != null ? (F & 1) : null
+
+
+
+
+
+
+
+
+ Annotations shall be artifacts if the NoView flag is set and the ToggleNoView flag is not set in accordance with ISO 32000-2:2020, Table 167
+ structParentType == null || isArtifact == true || ((F & 32) == 0 || (F & 256) == 1)
+
+ A no-view annotation is included in logical structure with tag %1 (standard type = %2, NoView = %3, ToggleNoView = %4)
+
+ structParentType
+ structParentStandardType
+ F != null ? (F & 32) >> 5 : null
+ F != null ? (F & 256) >> 8 : null
+
+
+
+
+
+
+
+
+ Markup annotations shall be enclosed within Annot structure elements
+ structParentStandardType == 'Annot'
+
+ A Markup annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Annot
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+ When both RC and Contents entries are present for markup annotation, they shall be textually equivalent
+ containsRC == false || Contents == null || RC == Contents
+
+ A Markup annotation contains Contents and RC entries with non-equivalent textual values (RC = %1, Contents = %2)
+
+ RC
+ Contents
+
+
+
+
+
+
+ If the Name entry is insufficient to describe the intent of the stamp annotation, a Contents entry describing the author’s intent shall be provided
+ Name != null || Contents != null
+
+ Rubber stamp annotation contains neither Name nor Contents entry
+
+
+
+
+
+
+
+
+ A Contents entry describing the author’s intent shall be provided for Ink annotation
+ Contents != null
+
+ Ink annotation does not contain Contents entry
+
+
+
+
+
+
+ Popup annotations shall not be present in the structure tree
+ structParentType == null
+
+ A Popup annotation is included in logical structure with tag %1 (standard type = %2)
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
+
+ When a file attachment annotation references a file specification dictionary, the file specification dictionary shall include an AFRelationship entry
+ containsFS == false || AFRelationship != null
+
+ The file specification dictionary referenced by a file attachment annotation does not include AFRelationship entry
+
+
+
+
+
+
+
+
+
+ Sound annotation cannot be used when conforming to PDF/UA-2
+ false
+
+ An annotation of subtype Sound exists
+
+
+
+
+
+
+ Movie annotation cannot be used when conforming to PDF/UA-2
+ false
+
+ An annotation of subtype Movie exists
+
+
+
+
+
+
+ Screen annotations shall include a Contents entry
+ Contents != null
+
+ Screen annotation does not contain Contents entry
+
+
+
+
+
+
+ A widget annotation of zero height and width shall be an artifact
+ width != 0 || height != 0 || structParentType == null || isArtifact == true
+
+ A Widget annotation of zero height and width is not marked as an Artifact (structure tag = %1, standard type = %2)
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
+
+ A printer's mark annotation shall be an artifact
+ structParentType == null || isArtifact == true
+
+ A PrinterMark annotation is included in logical structure with tag %1 (standard type = %2)
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
+
+ Trap network annotations shall not be used in files conforming to PDF/UA-2
+ false
+
+ An annotation of subtype TrapNet exists
+
+
+
+
+
+
+ When used as real content, Watermark annotations shall be enclosed within Annot structure elements
+ structParentType == null || isArtifact == true || structParentStandardType == 'Annot'
+
+ A Watermark annotation is nested within %1 tag (standard type = %2) instead of Annot
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+ 3D annotation shall include alternate description in respective Contents entry
+ Contents != null
+
+ 3D annotation does not contain Contents entry
+
+
+
+
+
+
+
+
+ RichMedia annotation shall include alternate description in respective Contents entry
+ Contents != null
+
+ RichMedia annotation does not contain Contents entry
+
+
+
+
+
+
+
+
+ Every page that includes an annotation shall contain a Tabs entry in its page dictionary in accordance with ISO 32000-2:2020, Table 31, and its value shall be A, W or S
+ annots_size == 0 || Tabs == 'A' || Tabs == 'W' || Tabs == 'S'
+
+ A page with annotation(s) contains Tabs key with value %1 instead of A, W or S
+
+ Tabs
+
+
+
+
+
+
+ Where an annotation has a Contents entry and the directly enclosing structure element has an Alt entry, the values of Alt and Contents shall be identical
+ Contents == null || Alt == null || Contents == Alt
+
+ Both Contents and Alt entries are present for the annotation, but they are not identical (Contents = %1, Alt = %2)
+
+ Contents
+ Alt
+
+
+
+
+
+
+ Each widget annotation shall be enclosed by a Form structure element unless the widget annotation is an artifact
+ structParentType == null || structParentStandardType == 'Form' || isArtifact == true
+
+ A Widget annotation is nested within %1 tag (standard type = %2) instead of Form or Artifact
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+ A Form structure element shall contain at most one widget annotation
+ widgetAnnotsCount <= 1
+
+ A Form structure element contains %1 widget annotations
+
+ widgetAnnotsCount
+
+
+
+
+
+
+ XFA forms shall not be present
+ containsXFA == false
+
+ XFA form is present
+
+
+
+
+
+
+
+
+ If a label for a widget annotation is not present, a Contents entry shall be provided to supply description and context for the widget
+ containsLbl == true || Contents != null
+
+ Widget annotation contains neither label nor Contents entry
+
+
+
+
+
+
+ If an additional action (AA) entry is present in a widget annotation dictionary, the respective widget's Contents entry shall be present
+ containsAA == false || Contents != null
+
+ Widget annotation dictionary contains an AA entry, but does not contain the Contents entry
+
+
+
+
+
+
+
+
+ For text fields, when an RV entry is present a V entry shall also be present, and they shall be textually equivalent
+ containsRV == false || (V != null && RV == V)
+
+ Text field contains RV entry, but no V entry or they are not textually equivalent (RV = %1, V = %2)
+
+ RV
+ V
+
+
+
+
+
+
+
+
+
+ If a portion of the appearance of a signature is represented by a graphic, alternative text shall be provided for that graphic
+ isSignature == false || Alt != null
+
+ A portion of the appearance of a signature is represented by a graphic, but alternative text is not provided for that graphic
+
+
+
+
+
+
+ The Metadata stream as specified in ISO 32000-2:2020, 14.3 in the document catalog dictionary shall contain a dc:title entry
+ dc_title != null
+
+ Metadata stream does not contain dc:title
+
+
+
+
+
+
+
+
+ The ViewerPreferences dictionary of the document catalog dictionary shall be present and shall contain at least the DisplayDocTitle key with a value of true, as described in ISO 32000-2:2020, Table 147
+ DisplayDocTitle == true
+
+ ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, DisplayDocTitle = %2)
+
+ ViewerPreferences
+ DisplayDocTitle
+
+
+
+
+
+
+
+
+ The Desc entry shall be present on all file specification dictionaries present in the EmbeddedFiles name tree of a conforming document
+ containsDesc == true || presentInEmbeddedFiles == false
+
+ The file specification dictionary for an embedded file does not contain Desc key
+
+
+
+
+
+
+ StructTreeRoot shall contain exactly one <Document>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 1
+
+ StructTreeRoot either doesn't contain or contains more than one <Document>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <DocumentFragment>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Part>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Part>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Art>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Art>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Div>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Div>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Sect>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Sect>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <TOC>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <TOC>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <TOCI>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <TOCI>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Aside>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Aside>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <BlockQuote>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <BlockQuote>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <NonStruct>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <NonStruct>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Private>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Private>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <P>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <P>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Note>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Note>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Code>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Code>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Hn>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Hn>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <H>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <H>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Title>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Title>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Sub>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Sub>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Lbl>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Lbl>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Em>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Em>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Strong>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Strong>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Span>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Span>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Quote>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Quote>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Link>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Link>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Reference>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Reference>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Annot>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Annot>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Form>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Form>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Ruby>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Ruby>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <RB>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <RB>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <RT>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <RT>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <RP>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <RP>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Warichu>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Warichu>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <WT>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <WT>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <WP>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <WP>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <FENote>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <FENote>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Index>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Index>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <L>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <L>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <LI>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <LI>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <LBody>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <LBody>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <BibEntry>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <BibEntry>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Table>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Table>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <TR>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <TR>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <TH>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <TH>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <TD>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <TD>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <THead>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <THead>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <TBody>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <TBody>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <TFoot>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <TFoot>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Caption>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Caption>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Figure>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Figure>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Formula>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Formula>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain <Artifact>
+ parentStandardType != 'StructTreeRoot'
+
+ StructTreeRoot contains <Artifact>
+
+
+
+
+
+
+
+
+ StructTreeRoot shall not contain content items
+ hasContentItems == false
+
+ StructTreeRoot contains content item(s)
+
+
+
+
+
+
+
+
+ <Document> shall not contain <TOCI>
+ parentStandardType != 'Document'
+
+ <Document> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Document> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <Document> contains more than one <H>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Sub>
+ parentStandardType != 'Document'
+
+ <Document> contains <Sub>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Lbl>
+ parentStandardType != 'Document'
+
+ <Document> contains <Lbl>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Em>
+ parentStandardType != 'Document'
+
+ <Document> contains <Em>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Strong>
+ parentStandardType != 'Document'
+
+ <Document> contains <Strong>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Span>
+ parentStandardType != 'Document'
+
+ <Document> contains <Span>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Quote>
+ parentStandardType != 'Document'
+
+ <Document> contains <Quote>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Reference>
+ parentStandardType != 'Document'
+
+ <Document> contains <Reference>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Ruby>
+ parentStandardType != 'Document'
+
+ <Document> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <RB>
+ parentStandardType != 'Document'
+
+ <Document> contains <RB>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <RT>
+ parentStandardType != 'Document'
+
+ <Document> contains <RT>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <RP>
+ parentStandardType != 'Document'
+
+ <Document> contains <RP>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Warichu>
+ parentStandardType != 'Document'
+
+ <Document> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <WT>
+ parentStandardType != 'Document'
+
+ <Document> contains <WT>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <WP>
+ parentStandardType != 'Document'
+
+ <Document> contains <WP>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <LI>
+ parentStandardType != 'Document'
+
+ <Document> contains <LI>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <LBody>
+ parentStandardType != 'Document'
+
+ <Document> contains <LBody>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <BibEntry>
+ parentStandardType != 'Document'
+
+ <Document> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <TR>
+ parentStandardType != 'Document'
+
+ <Document> contains <TR>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <TH>
+ parentStandardType != 'Document'
+
+ <Document> contains <TH>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <TD>
+ parentStandardType != 'Document'
+
+ <Document> contains <TD>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <THead>
+ parentStandardType != 'Document'
+
+ <Document> contains <THead>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <TBody>
+ parentStandardType != 'Document'
+
+ <Document> contains <TBody>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <TFoot>
+ parentStandardType != 'Document'
+
+ <Document> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Document> shall not contain <Caption>
+ parentStandardType != 'Document'
+
+ <Document> contains <Caption>
+
+
+
+
+
+
+
+
+ <Document> shall not contain content items
+ hasContentItems == false
+
+ <Document> contains content item(s)
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <TOCI>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <TOCI>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <DocumentFragment> contains more than one <H>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Sub>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Sub>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Lbl>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Lbl>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Em>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Em>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Strong>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Strong>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Span>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Span>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Quote>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Quote>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Reference>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Reference>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Ruby>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Ruby>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <RB>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <RB>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <RT>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <RT>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <RP>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <RP>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Warichu>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Warichu>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <WT>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <WT>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <WP>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <WP>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <LI>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <LI>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <LBody>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <LBody>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <BibEntry>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <TR>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <TR>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <TH>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <TH>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <TD>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <TD>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <THead>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <THead>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <TBody>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <TBody>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <TFoot>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <TFoot>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain <Caption>
+ parentStandardType != 'DocumentFragment'
+
+ <DocumentFragment> contains <Caption>
+
+
+
+
+
+
+
+
+ <DocumentFragment> shall not contain content items
+ hasContentItems == false
+
+ <DocumentFragment> contains content item(s)
+
+
+
+
+
+
+
+
+ <Part> shall not contain <Em>
+ parentStandardType != 'Part'
+
+ <Part> contains <Em>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <Strong>
+ parentStandardType != 'Part'
+
+ <Part> contains <Strong>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <Span>
+ parentStandardType != 'Part'
+
+ <Part> contains <Span>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <Quote>
+ parentStandardType != 'Part'
+
+ <Part> contains <Quote>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <Ruby>
+ parentStandardType != 'Part'
+
+ <Part> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <RB>
+ parentStandardType != 'Part'
+
+ <Part> contains <RB>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <RT>
+ parentStandardType != 'Part'
+
+ <Part> contains <RT>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <RP>
+ parentStandardType != 'Part'
+
+ <Part> contains <RP>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <Warichu>
+ parentStandardType != 'Part'
+
+ <Part> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <WT>
+ parentStandardType != 'Part'
+
+ <Part> contains <WT>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <WP>
+ parentStandardType != 'Part'
+
+ <Part> contains <WP>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <LI>
+ parentStandardType != 'Part'
+
+ <Part> contains <LI>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <LBody>
+ parentStandardType != 'Part'
+
+ <Part> contains <LBody>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <TR>
+ parentStandardType != 'Part'
+
+ <Part> contains <TR>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <TH>
+ parentStandardType != 'Part'
+
+ <Part> contains <TH>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <TD>
+ parentStandardType != 'Part'
+
+ <Part> contains <TD>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <THead>
+ parentStandardType != 'Part'
+
+ <Part> contains <THead>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <TBody>
+ parentStandardType != 'Part'
+
+ <Part> contains <TBody>
+
+
+
+
+
+
+
+
+ <Part> shall not contain <TFoot>
+ parentStandardType != 'Part'
+
+ <Part> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Part> shall not contain content items
+ hasContentItems == false
+
+ <Part> contains content item(s)
+
+
+
+
+
+
+
+
+ <Div> shall not contain content items
+ hasContentItems == false
+
+ <Div> contains content item(s)
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Document>
+ parentStandardType != 'Art'
+
+ <Art> contains <Document>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Art>
+ parentStandardType != 'Art'
+
+ <Art> contains <Art>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <TOCI>
+ parentStandardType != 'Art'
+
+ <Art> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Art> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <Art> contains more than one <H>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Sub>
+ parentStandardType != 'Art'
+
+ <Art> contains <Sub>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Em>
+ parentStandardType != 'Art'
+
+ <Art> contains <Em>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Strong>
+ parentStandardType != 'Art'
+
+ <Art> contains <Strong>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Span>
+ parentStandardType != 'Art'
+
+ <Art> contains <Span>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Quote>
+ parentStandardType != 'Art'
+
+ <Art> contains <Quote>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Reference>
+ parentStandardType != 'Art'
+
+ <Art> contains <Reference>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Ruby>
+ parentStandardType != 'Art'
+
+ <Art> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <RB>
+ parentStandardType != 'Art'
+
+ <Art> contains <RB>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <RT>
+ parentStandardType != 'Art'
+
+ <Art> contains <RT>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <RP>
+ parentStandardType != 'Art'
+
+ <Art> contains <RP>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <Warichu>
+ parentStandardType != 'Art'
+
+ <Art> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <WT>
+ parentStandardType != 'Art'
+
+ <Art> contains <WT>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <WP>
+ parentStandardType != 'Art'
+
+ <Art> contains <WP>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <LI>
+ parentStandardType != 'Art'
+
+ <Art> contains <LI>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <LBody>
+ parentStandardType != 'Art'
+
+ <Art> contains <LBody>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <BibEntry>
+ parentStandardType != 'Art'
+
+ <Art> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <TR>
+ parentStandardType != 'Art'
+
+ <Art> contains <TR>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <TH>
+ parentStandardType != 'Art'
+
+ <Art> contains <TH>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <TD>
+ parentStandardType != 'Art'
+
+ <Art> contains <TD>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <THead>
+ parentStandardType != 'Art'
+
+ <Art> contains <THead>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <TBody>
+ parentStandardType != 'Art'
+
+ <Art> contains <TBody>
+
+
+
+
+
+
+
+
+ <Art> shall not contain <TFoot>
+ parentStandardType != 'Art'
+
+ <Art> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Art> shall not contain content items
+ hasContentItems == false
+
+ <Art> contains content item(s)
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <Document>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <Document>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <TOCI>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Sect> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <Sect> contains more than one <H>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <Sub>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <Sub>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <Em>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <Em>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <Strong>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <Strong>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <Span>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <Span>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <Quote>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <Quote>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <Reference>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <Reference>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <Ruby>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <RB>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <RB>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <RT>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <RT>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <RP>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <RP>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <Warichu>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <WT>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <WT>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <WP>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <WP>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <LI>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <LI>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <LBody>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <LBody>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <BibEntry>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <TR>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <TR>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <TH>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <TH>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <TD>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <TD>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <THead>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <THead>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <TBody>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <TBody>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain <TFoot>
+ parentStandardType != 'Sect'
+
+ <Sect> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Sect> shall not contain content items
+ hasContentItems == false
+
+ <Sect> contains content item(s)
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Document>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Document>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <DocumentFragment>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Part>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Part>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Art>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Art>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Div>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Div>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Sect>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Sect>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Aside>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Aside>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <BlockQuote>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <P>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <P>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Note>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Note>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Code>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Code>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Hn>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Hn>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <H>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <H>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Title>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Title>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Sub>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Sub>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Lbl>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Lbl>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Em>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Em>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Strong>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Strong>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Span>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Span>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Quote>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Quote>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Link>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Link>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Reference>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Reference>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Annot>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Annot>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Form>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Form>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Ruby>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Ruby>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <RB>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <RB>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <RT>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <RT>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <RP>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <RP>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Warichu>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Warichu>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <WT>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <WT>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <WP>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <WP>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <FENote>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <FENote>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Index>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Index>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <L>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <L>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <LI>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <LI>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <LBody>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <LBody>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <BibEntry>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Table>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Table>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <TR>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <TR>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <TH>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <TH>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <TD>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <TD>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <THead>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <THead>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <TBody>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <TBody>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <TFoot>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <TFoot>
+
+
+
+
+
+
+
+
+ <TOC> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <TOC> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Figure>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Figure>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain <Formula>
+ parentStandardType != 'TOC'
+
+ <TOC> contains <Formula>
+
+
+
+
+
+
+
+
+ <TOC> shall not contain content items
+ hasContentItems == false
+
+ <TOC> contains content item(s)
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Document>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Document>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <DocumentFragment>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Part>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Part>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Art>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Art>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Sect>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Sect>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <TOCI>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <TOCI>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Aside>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Aside>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <BlockQuote>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Note>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Note>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Code>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Code>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Hn>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Hn>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <H>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <H>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Title>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Title>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Sub>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Sub>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Em>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Em>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Strong>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Strong>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Span>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Span>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Quote>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Quote>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Link>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Link>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Annot>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Annot>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Form>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Form>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Ruby>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Ruby>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <RB>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <RB>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <RT>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <RT>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <RP>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <RP>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Warichu>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Warichu>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <WT>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <WT>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <WP>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <WP>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <FENote>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <FENote>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Index>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Index>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <L>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <L>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <LI>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <LI>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <LBody>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <LBody>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <BibEntry>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Table>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Table>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <TR>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <TR>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <TH>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <TH>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <TD>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <TD>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <THead>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <THead>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <TBody>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <TBody>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <TFoot>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <TFoot>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Caption>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Caption>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Figure>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Figure>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain <Formula>
+ parentStandardType != 'TOCI'
+
+ <TOCI> contains <Formula>
+
+
+
+
+
+
+
+
+ <TOCI> shall not contain content items
+ hasContentItems == false
+
+ <TOCI> contains content item(s)
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <TOCI>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <Aside>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <Aside>
+
+
+
+
+
+
+
+
+ <Aside> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <Aside> contains more than one <H>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <Title>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <Title>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <Sub>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <Sub>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <Em>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <Em>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <Strong>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <Strong>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <Span>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <Span>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <Quote>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <Quote>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <Ruby>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <RB>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <RB>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <RT>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <RT>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <RP>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <RP>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <Warichu>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <WT>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <WT>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <WP>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <WP>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <LI>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <LI>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <LBody>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <LBody>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <BibEntry>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <TR>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <TR>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <TH>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <TH>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <TD>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <TD>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <THead>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <THead>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <TBody>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <TBody>
+
+
+
+
+
+
+
+
+ <Aside> shall not contain <TFoot>
+ parentStandardType != 'Aside'
+
+ <Aside> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Aside> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <Aside> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <TOCI>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <TOCI>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <Aside>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <Aside>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <BlockQuote> contains more than one <H>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <Title>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <Title>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <Sub>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <Sub>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <Em>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <Em>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <Strong>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <Strong>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <Span>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <Span>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <Quote>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <Quote>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <Ruby>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <Ruby>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <RB>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <RB>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <RT>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <RT>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <RP>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <RP>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <Warichu>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <Warichu>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <WT>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <WT>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <WP>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <WP>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <LI>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <LI>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <LBody>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <LBody>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <BibEntry>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <TR>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <TR>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <TH>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <TH>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <TD>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <TD>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <THead>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <THead>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <TBody>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <TBody>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall not contain <TFoot>
+ parentStandardType != 'BlockQuote'
+
+ <BlockQuote> contains <TFoot>
+
+
+
+
+
+
+
+
+ <BlockQuote> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <BlockQuote> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <Document>
+ parentStandardType != 'Title'
+
+ <Title> contains <Document>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <DocumentFragment>
+ parentStandardType != 'Title'
+
+ <Title> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <Art>
+ parentStandardType != 'Title'
+
+ <Title> contains <Art>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <Sect>
+ parentStandardType != 'Title'
+
+ <Title> contains <Sect>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <TOC>
+ parentStandardType != 'Title'
+
+ <Title> contains <TOC>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <TOCI>
+ parentStandardType != 'Title'
+
+ <Title> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <BlockQuote>
+ parentStandardType != 'Title'
+
+ <Title> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <Hn>
+ parentStandardType != 'Title'
+
+ <Title> contains <Hn>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <H>
+ parentStandardType != 'Title'
+
+ <Title> contains <H>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <Title>
+ parentStandardType != 'Title'
+
+ <Title> contains <Title>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <Sub>
+ parentStandardType != 'Title'
+
+ <Title> contains <Sub>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <RB>
+ parentStandardType != 'Title'
+
+ <Title> contains <RB>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <RT>
+ parentStandardType != 'Title'
+
+ <Title> contains <RT>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <RP>
+ parentStandardType != 'Title'
+
+ <Title> contains <RP>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <WT>
+ parentStandardType != 'Title'
+
+ <Title> contains <WT>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <WP>
+ parentStandardType != 'Title'
+
+ <Title> contains <WP>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <Index>
+ parentStandardType != 'Title'
+
+ <Title> contains <Index>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <LI>
+ parentStandardType != 'Title'
+
+ <Title> contains <LI>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <LBody>
+ parentStandardType != 'Title'
+
+ <Title> contains <LBody>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <TR>
+ parentStandardType != 'Title'
+
+ <Title> contains <TR>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <TH>
+ parentStandardType != 'Title'
+
+ <Title> contains <TH>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <TD>
+ parentStandardType != 'Title'
+
+ <Title> contains <TD>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <THead>
+ parentStandardType != 'Title'
+
+ <Title> contains <THead>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <TBody>
+ parentStandardType != 'Title'
+
+ <Title> contains <TBody>
+
+
+
+
+
+
+
+
+ <Title> shall not contain <TFoot>
+ parentStandardType != 'Title'
+
+ <Title> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Title> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <Title> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Document>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Document>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <DocumentFragment>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Part>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Part>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Art>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Art>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Div>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Div>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Sect>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Sect>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <TOC>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <TOC>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <TOCI>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Aside>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Aside>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <BlockQuote>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <P>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <P>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Hn>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Hn>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <H>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <H>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Title>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Title>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Sub>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Sub>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <RB>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <RB>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <RT>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <RT>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <RP>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <RP>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <WT>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <WT>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <WP>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <WP>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Index>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Index>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <LI>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <LI>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <LBody>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <LBody>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Table>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Table>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <TR>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <TR>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <TH>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <TH>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <TD>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <TD>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <THead>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <THead>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <TBody>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <TBody>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <TFoot>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Sub> shall not contain <Caption>
+ parentStandardType != 'Sub'
+
+ <Sub> contains <Caption>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Document>
+ parentStandardType != 'P'
+
+ <P> contains <Document>
+
+
+
+
+
+
+
+
+ <P> shall not contain <DocumentFragment>
+ parentStandardType != 'P'
+
+ <P> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Part>
+ parentStandardType != 'P'
+
+ <P> contains <Part>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Art>
+ parentStandardType != 'P'
+
+ <P> contains <Art>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Div>
+ parentStandardType != 'P'
+
+ <P> contains <Div>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Sect>
+ parentStandardType != 'P'
+
+ <P> contains <Sect>
+
+
+
+
+
+
+
+
+ <P> shall not contain <TOC>
+ parentStandardType != 'P'
+
+ <P> contains <TOC>
+
+
+
+
+
+
+
+
+ <P> shall not contain <TOCI>
+ parentStandardType != 'P'
+
+ <P> contains <TOCI>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Aside>
+ parentStandardType != 'P'
+
+ <P> contains <Aside>
+
+
+
+
+
+
+
+
+ <P> shall not contain <BlockQuote>
+ parentStandardType != 'P'
+
+ <P> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <P> shall not contain <P>
+ parentStandardType != 'P'
+
+ <P> contains <P>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Hn>
+ parentStandardType != 'P'
+
+ <P> contains <Hn>
+
+
+
+
+
+
+
+
+ <P> shall not contain <H>
+ parentStandardType != 'P'
+
+ <P> contains <H>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Title>
+ parentStandardType != 'P'
+
+ <P> contains <Title>
+
+
+
+
+
+
+
+
+ <P> shall not contain <RB>
+ parentStandardType != 'P'
+
+ <P> contains <RB>
+
+
+
+
+
+
+
+
+ <P> shall not contain <RT>
+ parentStandardType != 'P'
+
+ <P> contains <RT>
+
+
+
+
+
+
+
+
+ <P> shall not contain <RP>
+ parentStandardType != 'P'
+
+ <P> contains <RP>
+
+
+
+
+
+
+
+
+ <P> shall not contain <WT>
+ parentStandardType != 'P'
+
+ <P> contains <WT>
+
+
+
+
+
+
+
+
+ <P> shall not contain <WP>
+ parentStandardType != 'P'
+
+ <P> contains <WP>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Index>
+ parentStandardType != 'P'
+
+ <P> contains <Index>
+
+
+
+
+
+
+
+
+ <P> shall not contain <LI>
+ parentStandardType != 'P'
+
+ <P> contains <LI>
+
+
+
+
+
+
+
+
+ <P> shall not contain <LBody>
+ parentStandardType != 'P'
+
+ <P> contains <LBody>
+
+
+
+
+
+
+
+
+ <P> shall not contain <TR>
+ parentStandardType != 'P'
+
+ <P> contains <TR>
+
+
+
+
+
+
+
+
+ <P> shall not contain <TH>
+ parentStandardType != 'P'
+
+ <P> contains <TH>
+
+
+
+
+
+
+
+
+ <P> shall not contain <TD>
+ parentStandardType != 'P'
+
+ <P> contains <TD>
+
+
+
+
+
+
+
+
+ <P> shall not contain <THead>
+ parentStandardType != 'P'
+
+ <P> contains <THead>
+
+
+
+
+
+
+
+
+ <P> shall not contain <TBody>
+ parentStandardType != 'P'
+
+ <P> contains <TBody>
+
+
+
+
+
+
+
+
+ <P> shall not contain <TFoot>
+ parentStandardType != 'P'
+
+ <P> contains <TFoot>
+
+
+
+
+
+
+
+
+ <P> shall not contain <Caption>
+ parentStandardType != 'P'
+
+ <P> contains <Caption>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <Document>
+ parentStandardType != 'Note'
+
+ <Note> contains <Document>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <TOC>
+ parentStandardType != 'Note'
+
+ <Note> contains <TOC>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <TOCI>
+ parentStandardType != 'Note'
+
+ <Note> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <Hn>
+ parentStandardType != 'Note'
+
+ <Note> contains <Hn>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <H>
+ parentStandardType != 'Note'
+
+ <Note> contains <H>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <Title>
+ parentStandardType != 'Note'
+
+ <Note> contains <Title>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <RB>
+ parentStandardType != 'Note'
+
+ <Note> contains <RB>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <RT>
+ parentStandardType != 'Note'
+
+ <Note> contains <RT>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <RP>
+ parentStandardType != 'Note'
+
+ <Note> contains <RP>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <WT>
+ parentStandardType != 'Note'
+
+ <Note> contains <WT>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <WP>
+ parentStandardType != 'Note'
+
+ <Note> contains <WP>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <LI>
+ parentStandardType != 'Note'
+
+ <Note> contains <LI>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <LBody>
+ parentStandardType != 'Note'
+
+ <Note> contains <LBody>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <TR>
+ parentStandardType != 'Note'
+
+ <Note> contains <TR>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <TH>
+ parentStandardType != 'Note'
+
+ <Note> contains <TH>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <TD>
+ parentStandardType != 'Note'
+
+ <Note> contains <TD>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <THead>
+ parentStandardType != 'Note'
+
+ <Note> contains <THead>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <TBody>
+ parentStandardType != 'Note'
+
+ <Note> contains <TBody>
+
+
+
+
+
+
+
+
+ <Note> shall not contain <TFoot>
+ parentStandardType != 'Note'
+
+ <Note> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Document>
+ parentStandardType != 'Code'
+
+ <Code> contains <Document>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Art>
+ parentStandardType != 'Code'
+
+ <Code> contains <Art>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Sect>
+ parentStandardType != 'Code'
+
+ <Code> contains <Sect>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <TOC>
+ parentStandardType != 'Code'
+
+ <Code> contains <TOC>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <TOCI>
+ parentStandardType != 'Code'
+
+ <Code> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Aside>
+ parentStandardType != 'Code'
+
+ <Code> contains <Aside>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <BlockQuote>
+ parentStandardType != 'Code'
+
+ <Code> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <P>
+ parentStandardType != 'Code'
+
+ <Code> contains <P>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Code>
+ parentStandardType != 'Code'
+
+ <Code> contains <Code>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Hn>
+ parentStandardType != 'Code'
+
+ <Code> contains <Hn>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <H>
+ parentStandardType != 'Code'
+
+ <Code> contains <H>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Title>
+ parentStandardType != 'Code'
+
+ <Code> contains <Title>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Sub>
+ parentStandardType != 'Code'
+
+ <Code> contains <Sub>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Lbl>
+ parentStandardType != 'Code'
+
+ <Code> contains <Lbl>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Quote>
+ parentStandardType != 'Code'
+
+ <Code> contains <Quote>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Form>
+ parentStandardType != 'Code'
+
+ <Code> contains <Form>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Ruby>
+ parentStandardType != 'Code'
+
+ <Code> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <RB>
+ parentStandardType != 'Code'
+
+ <Code> contains <RB>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <RT>
+ parentStandardType != 'Code'
+
+ <Code> contains <RT>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <RP>
+ parentStandardType != 'Code'
+
+ <Code> contains <RP>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Warichu>
+ parentStandardType != 'Code'
+
+ <Code> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <WT>
+ parentStandardType != 'Code'
+
+ <Code> contains <WT>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <WP>
+ parentStandardType != 'Code'
+
+ <Code> contains <WP>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Index>
+ parentStandardType != 'Code'
+
+ <Code> contains <Index>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <L>
+ parentStandardType != 'Code'
+
+ <Code> contains <L>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <LI>
+ parentStandardType != 'Code'
+
+ <Code> contains <LI>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <LBody>
+ parentStandardType != 'Code'
+
+ <Code> contains <LBody>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Table>
+ parentStandardType != 'Code'
+
+ <Code> contains <Table>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <TR>
+ parentStandardType != 'Code'
+
+ <Code> contains <TR>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <TH>
+ parentStandardType != 'Code'
+
+ <Code> contains <TH>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <TD>
+ parentStandardType != 'Code'
+
+ <Code> contains <TD>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <THead>
+ parentStandardType != 'Code'
+
+ <Code> contains <THead>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <TBody>
+ parentStandardType != 'Code'
+
+ <Code> contains <TBody>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <TFoot>
+ parentStandardType != 'Code'
+
+ <Code> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Caption>
+ parentStandardType != 'Code'
+
+ <Code> contains <Caption>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Figure>
+ parentStandardType != 'Code'
+
+ <Code> contains <Figure>
+
+
+
+
+
+
+
+
+ <Code> shall not contain <Formula>
+ parentStandardType != 'Code'
+
+ <Code> contains <Formula>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <Document>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <Document>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <DocumentFragment>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <Part>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <Part>
+
+
+
+
+
+
+
+
+ <Hn> shall contain at most one <Art>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1
+
+ <Hn> contains more than one <Art>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <Div>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <Div>
+
+
+
+
+
+
+
+
+ <Hn> shall contain at most one <Sect>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1
+
+ <Hn> contains more than one <Sect>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <TOC>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <TOC>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <TOCI>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <Aside>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <Aside>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <BlockQuote>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <P>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <P>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <Hn>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <Hn>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <H>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <H>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <Title>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <Title>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <RB>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <RB>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <RT>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <RT>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <RP>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <RP>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <WT>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <WT>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <WP>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <WP>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <Index>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <Index>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <L>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <L>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <LI>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <LI>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <LBody>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <LBody>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <Table>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <Table>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <TR>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <TR>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <TH>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <TH>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <TD>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <TD>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <THead>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <THead>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <TBody>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <TBody>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <TFoot>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Hn> shall not contain <Caption>
+ /^H[1-9][0-9]*$/.test(parentStandardType) == false
+
+ <Hn> contains <Caption>
+
+
+
+
+
+
+
+
+ <H> shall not contain <Document>
+ parentStandardType != 'H'
+
+ <H> contains <Document>
+
+
+
+
+
+
+
+
+ <H> shall not contain <DocumentFragment>
+ parentStandardType != 'H'
+
+ <H> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <H> shall not contain <Part>
+ parentStandardType != 'H'
+
+ <H> contains <Part>
+
+
+
+
+
+
+
+
+ <H> shall contain at most one <Art>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1
+
+ <H> contains more than one <Art>
+
+
+
+
+
+
+
+
+ <H> shall not contain <Div>
+ parentStandardType != 'H'
+
+ <H> contains <Div>
+
+
+
+
+
+
+
+
+ <H> shall contain at most one <Sect>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1
+
+ <H> contains more than one <Sect>
+
+
+
+
+
+
+
+
+ <H> shall not contain <TOC>
+ parentStandardType != 'H'
+
+ <H> contains <TOC>
+
+
+
+
+
+
+
+
+ <H> shall not contain <TOCI>
+ parentStandardType != 'H'
+
+ <H> contains <TOCI>
+
+
+
+
+
+
+
+
+ <H> shall not contain <Aside>
+ parentStandardType != 'H'
+
+ <H> contains <Aside>
+
+
+
+
+
+
+
+
+ <H> shall not contain <BlockQuote>
+ parentStandardType != 'H'
+
+ <H> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <H> shall not contain <P>
+ parentStandardType != 'H'
+
+ <H> contains <P>
+
+
+
+
+
+
+
+
+ <H> shall not contain <Hn>
+ parentStandardType != 'H'
+
+ <H> contains <Hn>
+
+
+
+
+
+
+
+
+ <H> shall not contain <H>
+ parentStandardType != 'H'
+
+ <H> contains <H>
+
+
+
+
+
+
+
+
+ <H> shall not contain <Title>
+ parentStandardType != 'H'
+
+ <H> contains <Title>
+
+
+
+
+
+
+
+
+ <H> shall not contain <RB>
+ parentStandardType != 'H'
+
+ <H> contains <RB>
+
+
+
+
+
+
+
+
+ <H> shall not contain <RT>
+ parentStandardType != 'H'
+
+ <H> contains <RT>
+
+
+
+
+
+
+
+
+ <H> shall not contain <RP>
+ parentStandardType != 'H'
+
+ <H> contains <RP>
+
+
+
+
+
+
+
+
+ <H> shall not contain <WT>
+ parentStandardType != 'H'
+
+ <H> contains <WT>
+
+
+
+
+
+
+
+
+ <H> shall not contain <WP>
+ parentStandardType != 'H'
+
+ <H> contains <WP>
+
+
+
+
+
+
+
+
+ <H> shall not contain <Index>
+ parentStandardType != 'H'
+
+ <H> contains <Index>
+
+
+
+
+
+
+
+
+ <H> shall not contain <L>
+ parentStandardType != 'H'
+
+ <H> contains <L>
+
+
+
+
+
+
+
+
+ <H> shall not contain <LI>
+ parentStandardType != 'H'
+
+ <H> contains <LI>
+
+
+
+
+
+
+
+
+ <H> shall not contain <LBody>
+ parentStandardType != 'H'
+
+ <H> contains <LBody>
+
+
+
+
+
+
+
+
+ <H> shall not contain <Table>
+ parentStandardType != 'H'
+
+ <H> contains <Table>
+
+
+
+
+
+
+
+
+ <H> shall not contain <TR>
+ parentStandardType != 'H'
+
+ <H> contains <TR>
+
+
+
+
+
+
+
+
+ <H> shall not contain <TH>
+ parentStandardType != 'H'
+
+ <H> contains <TH>
+
+
+
+
+
+
+
+
+ <H> shall not contain <TD>
+ parentStandardType != 'H'
+
+ <H> contains <TD>
+
+
+
+
+
+
+
+
+ <H> shall not contain <THead>
+ parentStandardType != 'H'
+
+ <H> contains <THead>
+
+
+
+
+
+
+
+
+ <H> shall not contain <TBody>
+ parentStandardType != 'H'
+
+ <H> contains <TBody>
+
+
+
+
+
+
+
+
+ <H> shall not contain <TFoot>
+ parentStandardType != 'H'
+
+ <H> contains <TFoot>
+
+
+
+
+
+
+
+
+ <H> shall not contain <Caption>
+ parentStandardType != 'H'
+
+ <H> contains <Caption>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Document>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Document>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <DocumentFragment>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Part>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Part>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Art>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Art>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Div>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Div>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Sect>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Sect>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <TOC>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <TOC>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <TOCI>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Aside>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Aside>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <BlockQuote>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <P>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <P>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Hn>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Hn>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <H>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <H>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Title>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Title>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Lbl>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Lbl>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <RB>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <RB>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <RT>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <RT>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <RP>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <RP>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <WT>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <WT>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <WP>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <WP>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Index>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Index>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <L>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <L>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <LI>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <LI>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <LBody>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <LBody>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Table>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Table>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <TR>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <TR>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <TH>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <TH>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <TD>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <TD>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <THead>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <THead>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <TBody>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <TBody>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <TFoot>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Lbl> shall not contain <Caption>
+ parentStandardType != 'Lbl'
+
+ <Lbl> contains <Caption>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Document>
+ parentStandardType != 'Em'
+
+ <Em> contains <Document>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <DocumentFragment>
+ parentStandardType != 'Em'
+
+ <Em> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Part>
+ parentStandardType != 'Em'
+
+ <Em> contains <Part>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Art>
+ parentStandardType != 'Em'
+
+ <Em> contains <Art>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Div>
+ parentStandardType != 'Em'
+
+ <Em> contains <Div>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Sect>
+ parentStandardType != 'Em'
+
+ <Em> contains <Sect>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <TOC>
+ parentStandardType != 'Em'
+
+ <Em> contains <TOC>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <TOCI>
+ parentStandardType != 'Em'
+
+ <Em> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Aside>
+ parentStandardType != 'Em'
+
+ <Em> contains <Aside>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <BlockQuote>
+ parentStandardType != 'Em'
+
+ <Em> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <P>
+ parentStandardType != 'Em'
+
+ <Em> contains <P>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Hn>
+ parentStandardType != 'Em'
+
+ <Em> contains <Hn>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <H>
+ parentStandardType != 'Em'
+
+ <Em> contains <H>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Title>
+ parentStandardType != 'Em'
+
+ <Em> contains <Title>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <RB>
+ parentStandardType != 'Em'
+
+ <Em> contains <RB>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <RT>
+ parentStandardType != 'Em'
+
+ <Em> contains <RT>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <RP>
+ parentStandardType != 'Em'
+
+ <Em> contains <RP>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <WT>
+ parentStandardType != 'Em'
+
+ <Em> contains <WT>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <WP>
+ parentStandardType != 'Em'
+
+ <Em> contains <WP>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Index>
+ parentStandardType != 'Em'
+
+ <Em> contains <Index>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <L>
+ parentStandardType != 'Em'
+
+ <Em> contains <L>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <LI>
+ parentStandardType != 'Em'
+
+ <Em> contains <LI>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <LBody>
+ parentStandardType != 'Em'
+
+ <Em> contains <LBody>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Table>
+ parentStandardType != 'Em'
+
+ <Em> contains <Table>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <TR>
+ parentStandardType != 'Em'
+
+ <Em> contains <TR>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <TH>
+ parentStandardType != 'Em'
+
+ <Em> contains <TH>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <TD>
+ parentStandardType != 'Em'
+
+ <Em> contains <TD>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <THead>
+ parentStandardType != 'Em'
+
+ <Em> contains <THead>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <TBody>
+ parentStandardType != 'Em'
+
+ <Em> contains <TBody>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <TFoot>
+ parentStandardType != 'Em'
+
+ <Em> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Em> shall not contain <Caption>
+ parentStandardType != 'Em'
+
+ <Em> contains <Caption>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Document>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Document>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <DocumentFragment>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Part>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Part>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Art>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Art>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Div>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Div>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Sect>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Sect>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <TOC>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <TOC>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <TOCI>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Aside>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Aside>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <BlockQuote>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <P>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <P>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Hn>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Hn>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <H>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <H>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Title>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Title>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <RB>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <RB>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <RT>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <RT>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <RP>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <RP>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <WT>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <WT>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <WP>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <WP>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Index>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Index>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <L>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <L>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <LI>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <LI>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <LBody>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <LBody>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Table>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Table>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <TR>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <TR>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <TH>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <TH>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <TD>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <TD>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <THead>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <THead>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <TBody>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <TBody>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <TFoot>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Strong> shall not contain <Caption>
+ parentStandardType != 'Strong'
+
+ <Strong> contains <Caption>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Document>
+ parentStandardType != 'Span'
+
+ <Span> contains <Document>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <DocumentFragment>
+ parentStandardType != 'Span'
+
+ <Span> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Part>
+ parentStandardType != 'Span'
+
+ <Span> contains <Part>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Art>
+ parentStandardType != 'Span'
+
+ <Span> contains <Art>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Div>
+ parentStandardType != 'Span'
+
+ <Span> contains <Div>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Sect>
+ parentStandardType != 'Span'
+
+ <Span> contains <Sect>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <TOC>
+ parentStandardType != 'Span'
+
+ <Span> contains <TOC>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <TOCI>
+ parentStandardType != 'Span'
+
+ <Span> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Aside>
+ parentStandardType != 'Span'
+
+ <Span> contains <Aside>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <BlockQuote>
+ parentStandardType != 'Span'
+
+ <Span> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <P>
+ parentStandardType != 'Span'
+
+ <Span> contains <P>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Hn>
+ parentStandardType != 'Span'
+
+ <Span> contains <Hn>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <H>
+ parentStandardType != 'Span'
+
+ <Span> contains <H>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Title>
+ parentStandardType != 'Span'
+
+ <Span> contains <Title>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <RB>
+ parentStandardType != 'Span'
+
+ <Span> contains <RB>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <RT>
+ parentStandardType != 'Span'
+
+ <Span> contains <RT>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <RP>
+ parentStandardType != 'Span'
+
+ <Span> contains <RP>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <WT>
+ parentStandardType != 'Span'
+
+ <Span> contains <WT>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <WP>
+ parentStandardType != 'Span'
+
+ <Span> contains <WP>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Index>
+ parentStandardType != 'Span'
+
+ <Span> contains <Index>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <L>
+ parentStandardType != 'Span'
+
+ <Span> contains <L>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <LI>
+ parentStandardType != 'Span'
+
+ <Span> contains <LI>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <LBody>
+ parentStandardType != 'Span'
+
+ <Span> contains <LBody>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Table>
+ parentStandardType != 'Span'
+
+ <Span> contains <Table>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <TR>
+ parentStandardType != 'Span'
+
+ <Span> contains <TR>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <TH>
+ parentStandardType != 'Span'
+
+ <Span> contains <TH>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <TD>
+ parentStandardType != 'Span'
+
+ <Span> contains <TD>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <THead>
+ parentStandardType != 'Span'
+
+ <Span> contains <THead>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <TBody>
+ parentStandardType != 'Span'
+
+ <Span> contains <TBody>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <TFoot>
+ parentStandardType != 'Span'
+
+ <Span> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Span> shall not contain <Caption>
+ parentStandardType != 'Span'
+
+ <Span> contains <Caption>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Document>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Document>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <DocumentFragment>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Part>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Part>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Art>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Art>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Div>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Div>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Sect>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Sect>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <TOC>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <TOC>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <TOCI>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Aside>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Aside>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <BlockQuote>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <P>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <P>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Hn>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Hn>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <H>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <H>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Title>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Title>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <RB>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <RB>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <RT>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <RT>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <RP>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <RP>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <WT>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <WT>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <WP>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <WP>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Index>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Index>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <L>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <L>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <LI>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <LI>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <LBody>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <LBody>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Table>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Table>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <TR>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <TR>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <TH>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <TH>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <TD>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <TD>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <THead>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <THead>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <TBody>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <TBody>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <TFoot>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Quote> shall not contain <Caption>
+ parentStandardType != 'Quote'
+
+ <Quote> contains <Caption>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <Document>
+ parentStandardType != 'Link'
+
+ <Link> contains <Document>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <TOC>
+ parentStandardType != 'Link'
+
+ <Link> contains <TOC>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <TOCI>
+ parentStandardType != 'Link'
+
+ <Link> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <Link>
+ parentStandardType != 'Link'
+
+ <Link> contains <Link>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <RB>
+ parentStandardType != 'Link'
+
+ <Link> contains <RB>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <RT>
+ parentStandardType != 'Link'
+
+ <Link> contains <RT>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <RP>
+ parentStandardType != 'Link'
+
+ <Link> contains <RP>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <WT>
+ parentStandardType != 'Link'
+
+ <Link> contains <WT>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <WP>
+ parentStandardType != 'Link'
+
+ <Link> contains <WP>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <Index>
+ parentStandardType != 'Link'
+
+ <Link> contains <Index>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <LI>
+ parentStandardType != 'Link'
+
+ <Link> contains <LI>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <LBody>
+ parentStandardType != 'Link'
+
+ <Link> contains <LBody>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <TR>
+ parentStandardType != 'Link'
+
+ <Link> contains <TR>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <TH>
+ parentStandardType != 'Link'
+
+ <Link> contains <TH>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <TD>
+ parentStandardType != 'Link'
+
+ <Link> contains <TD>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <THead>
+ parentStandardType != 'Link'
+
+ <Link> contains <THead>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <TBody>
+ parentStandardType != 'Link'
+
+ <Link> contains <TBody>
+
+
+
+
+
+
+
+
+ <Link> shall not contain <TFoot>
+ parentStandardType != 'Link'
+
+ <Link> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Document>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Document>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <DocumentFragment>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Part>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Part>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Art>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Art>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Div>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Div>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Sect>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Sect>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <TOC>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <TOC>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <TOCI>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Aside>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Aside>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <BlockQuote>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <P>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <P>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Code>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Code>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Hn>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Hn>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <H>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <H>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Title>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Title>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Sub>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Sub>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Quote>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Quote>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Reference>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Reference>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Form>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Form>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Ruby>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <RB>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <RB>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <RT>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <RT>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <RP>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <RP>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Warichu>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <WT>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <WT>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <WP>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <WP>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Index>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Index>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <L>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <L>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <LI>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <LI>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <LBody>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <LBody>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Table>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Table>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <TR>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <TR>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <TH>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <TH>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <TD>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <TD>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <THead>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <THead>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <TBody>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <TBody>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <TFoot>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Caption>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Caption>
+
+
+
+
+
+
+
+
+ <Reference> shall not contain <Formula>
+ parentStandardType != 'Reference'
+
+ <Reference> contains <Formula>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <Document>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <Document>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <TOC>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <TOC>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <TOCI>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <Private>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <Private>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <RB>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <RB>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <RT>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <RT>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <RP>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <RP>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <WT>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <WT>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <WP>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <WP>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <Index>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <Index>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <LI>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <LI>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <LBody>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <LBody>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <TR>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <TR>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <TH>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <TH>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <TD>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <TD>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <THead>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <THead>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <TBody>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <TBody>
+
+
+
+
+
+
+
+
+ <Annot> shall not contain <TFoot>
+ parentStandardType != 'Annot'
+
+ <Annot> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Document>
+ parentStandardType != 'Form'
+
+ <Form> contains <Document>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <DocumentFragment>
+ parentStandardType != 'Form'
+
+ <Form> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Art>
+ parentStandardType != 'Form'
+
+ <Form> contains <Art>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Sect>
+ parentStandardType != 'Form'
+
+ <Form> contains <Sect>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <TOC>
+ parentStandardType != 'Form'
+
+ <Form> contains <TOC>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <TOCI>
+ parentStandardType != 'Form'
+
+ <Form> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Aside>
+ parentStandardType != 'Form'
+
+ <Form> contains <Aside>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <BlockQuote>
+ parentStandardType != 'Form'
+
+ <Form> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <P>
+ parentStandardType != 'Form'
+
+ <Form> contains <P>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Hn>
+ parentStandardType != 'Form'
+
+ <Form> contains <Hn>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <H>
+ parentStandardType != 'Form'
+
+ <Form> contains <H>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Title>
+ parentStandardType != 'Form'
+
+ <Form> contains <Title>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Sub>
+ parentStandardType != 'Form'
+
+ <Form> contains <Sub>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Em>
+ parentStandardType != 'Form'
+
+ <Form> contains <Em>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Strong>
+ parentStandardType != 'Form'
+
+ <Form> contains <Strong>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Span>
+ parentStandardType != 'Form'
+
+ <Form> contains <Span>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Quote>
+ parentStandardType != 'Form'
+
+ <Form> contains <Quote>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Link>
+ parentStandardType != 'Form'
+
+ <Form> contains <Link>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Annot>
+ parentStandardType != 'Form'
+
+ <Form> contains <Annot>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Form>
+ parentStandardType != 'Form'
+
+ <Form> contains <Form>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Ruby>
+ parentStandardType != 'Form'
+
+ <Form> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <RB>
+ parentStandardType != 'Form'
+
+ <Form> contains <RB>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <RT>
+ parentStandardType != 'Form'
+
+ <Form> contains <RT>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <RP>
+ parentStandardType != 'Form'
+
+ <Form> contains <RP>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Warichu>
+ parentStandardType != 'Form'
+
+ <Form> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <WT>
+ parentStandardType != 'Form'
+
+ <Form> contains <WT>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <WP>
+ parentStandardType != 'Form'
+
+ <Form> contains <WP>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <Index>
+ parentStandardType != 'Form'
+
+ <Form> contains <Index>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <LI>
+ parentStandardType != 'Form'
+
+ <Form> contains <LI>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <LBody>
+ parentStandardType != 'Form'
+
+ <Form> contains <LBody>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <TR>
+ parentStandardType != 'Form'
+
+ <Form> contains <TR>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <TH>
+ parentStandardType != 'Form'
+
+ <Form> contains <TH>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <TD>
+ parentStandardType != 'Form'
+
+ <Form> contains <TD>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <THead>
+ parentStandardType != 'Form'
+
+ <Form> contains <THead>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <TBody>
+ parentStandardType != 'Form'
+
+ <Form> contains <TBody>
+
+
+
+
+
+
+
+
+ <Form> shall not contain <TFoot>
+ parentStandardType != 'Form'
+
+ <Form> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Form> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <Form> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Document>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Document>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <DocumentFragment>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Part>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Part>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Art>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Art>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Div>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Div>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Sect>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Sect>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <TOC>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <TOC>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <TOCI>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Aside>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Aside>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <BlockQuote>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <P>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <P>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Note>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Note>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Code>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Code>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Hn>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Hn>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <H>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <H>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Title>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Title>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Sub>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Sub>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Lbl>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Lbl>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Em>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Em>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Strong>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Strong>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Span>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Span>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Quote>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Quote>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Link>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Link>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Reference>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Reference>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Annot>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Annot>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Form>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Form>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Ruby>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Warichu>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <WT>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <WT>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <WP>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <WP>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <FENote>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <FENote>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Index>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Index>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <L>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <L>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <LI>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <LI>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <LBody>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <LBody>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <BibEntry>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Table>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Table>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <TR>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <TR>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <TH>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <TH>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <TD>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <TD>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <THead>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <THead>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <TBody>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <TBody>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <TFoot>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Caption>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Caption>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Figure>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Figure>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Formula>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Formula>
+
+
+
+
+
+
+
+
+ <Ruby> shall not contain <Artifact>
+ parentStandardType != 'Ruby'
+
+ <Ruby> contains <Artifact>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Document>
+ parentStandardType != 'RB'
+
+ <RB> contains <Document>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <DocumentFragment>
+ parentStandardType != 'RB'
+
+ <RB> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Part>
+ parentStandardType != 'RB'
+
+ <RB> contains <Part>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Art>
+ parentStandardType != 'RB'
+
+ <RB> contains <Art>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Div>
+ parentStandardType != 'RB'
+
+ <RB> contains <Div>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Sect>
+ parentStandardType != 'RB'
+
+ <RB> contains <Sect>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <TOC>
+ parentStandardType != 'RB'
+
+ <RB> contains <TOC>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <TOCI>
+ parentStandardType != 'RB'
+
+ <RB> contains <TOCI>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Aside>
+ parentStandardType != 'RB'
+
+ <RB> contains <Aside>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <BlockQuote>
+ parentStandardType != 'RB'
+
+ <RB> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <P>
+ parentStandardType != 'RB'
+
+ <RB> contains <P>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Note>
+ parentStandardType != 'RB'
+
+ <RB> contains <Note>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Code>
+ parentStandardType != 'RB'
+
+ <RB> contains <Code>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Hn>
+ parentStandardType != 'RB'
+
+ <RB> contains <Hn>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <H>
+ parentStandardType != 'RB'
+
+ <RB> contains <H>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Title>
+ parentStandardType != 'RB'
+
+ <RB> contains <Title>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Lbl>
+ parentStandardType != 'RB'
+
+ <RB> contains <Lbl>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Ruby>
+ parentStandardType != 'RB'
+
+ <RB> contains <Ruby>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <RB>
+ parentStandardType != 'RB'
+
+ <RB> contains <RB>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <RT>
+ parentStandardType != 'RB'
+
+ <RB> contains <RT>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <RP>
+ parentStandardType != 'RB'
+
+ <RB> contains <RP>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Warichu>
+ parentStandardType != 'RB'
+
+ <RB> contains <Warichu>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <WT>
+ parentStandardType != 'RB'
+
+ <RB> contains <WT>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <WP>
+ parentStandardType != 'RB'
+
+ <RB> contains <WP>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <FENote>
+ parentStandardType != 'RB'
+
+ <RB> contains <FENote>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Index>
+ parentStandardType != 'RB'
+
+ <RB> contains <Index>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <L>
+ parentStandardType != 'RB'
+
+ <RB> contains <L>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <LI>
+ parentStandardType != 'RB'
+
+ <RB> contains <LI>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <LBody>
+ parentStandardType != 'RB'
+
+ <RB> contains <LBody>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <BibEntry>
+ parentStandardType != 'RB'
+
+ <RB> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Table>
+ parentStandardType != 'RB'
+
+ <RB> contains <Table>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <TR>
+ parentStandardType != 'RB'
+
+ <RB> contains <TR>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <TH>
+ parentStandardType != 'RB'
+
+ <RB> contains <TH>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <TD>
+ parentStandardType != 'RB'
+
+ <RB> contains <TD>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <THead>
+ parentStandardType != 'RB'
+
+ <RB> contains <THead>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <TBody>
+ parentStandardType != 'RB'
+
+ <RB> contains <TBody>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <TFoot>
+ parentStandardType != 'RB'
+
+ <RB> contains <TFoot>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Caption>
+ parentStandardType != 'RB'
+
+ <RB> contains <Caption>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Figure>
+ parentStandardType != 'RB'
+
+ <RB> contains <Figure>
+
+
+
+
+
+
+
+
+ <RB> shall not contain <Formula>
+ parentStandardType != 'RB'
+
+ <RB> contains <Formula>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Document>
+ parentStandardType != 'RT'
+
+ <RT> contains <Document>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <DocumentFragment>
+ parentStandardType != 'RT'
+
+ <RT> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Part>
+ parentStandardType != 'RT'
+
+ <RT> contains <Part>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Art>
+ parentStandardType != 'RT'
+
+ <RT> contains <Art>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Div>
+ parentStandardType != 'RT'
+
+ <RT> contains <Div>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Sect>
+ parentStandardType != 'RT'
+
+ <RT> contains <Sect>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <TOC>
+ parentStandardType != 'RT'
+
+ <RT> contains <TOC>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <TOCI>
+ parentStandardType != 'RT'
+
+ <RT> contains <TOCI>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Aside>
+ parentStandardType != 'RT'
+
+ <RT> contains <Aside>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <BlockQuote>
+ parentStandardType != 'RT'
+
+ <RT> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <P>
+ parentStandardType != 'RT'
+
+ <RT> contains <P>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Note>
+ parentStandardType != 'RT'
+
+ <RT> contains <Note>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Code>
+ parentStandardType != 'RT'
+
+ <RT> contains <Code>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Hn>
+ parentStandardType != 'RT'
+
+ <RT> contains <Hn>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <H>
+ parentStandardType != 'RT'
+
+ <RT> contains <H>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Title>
+ parentStandardType != 'RT'
+
+ <RT> contains <Title>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Lbl>
+ parentStandardType != 'RT'
+
+ <RT> contains <Lbl>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Ruby>
+ parentStandardType != 'RT'
+
+ <RT> contains <Ruby>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <RB>
+ parentStandardType != 'RT'
+
+ <RT> contains <RB>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <RT>
+ parentStandardType != 'RT'
+
+ <RT> contains <RT>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <RP>
+ parentStandardType != 'RT'
+
+ <RT> contains <RP>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Warichu>
+ parentStandardType != 'RT'
+
+ <RT> contains <Warichu>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <WT>
+ parentStandardType != 'RT'
+
+ <RT> contains <WT>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <WP>
+ parentStandardType != 'RT'
+
+ <RT> contains <WP>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <FENote>
+ parentStandardType != 'RT'
+
+ <RT> contains <FENote>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Index>
+ parentStandardType != 'RT'
+
+ <RT> contains <Index>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <L>
+ parentStandardType != 'RT'
+
+ <RT> contains <L>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <LI>
+ parentStandardType != 'RT'
+
+ <RT> contains <LI>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <LBody>
+ parentStandardType != 'RT'
+
+ <RT> contains <LBody>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <BibEntry>
+ parentStandardType != 'RT'
+
+ <RT> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Table>
+ parentStandardType != 'RT'
+
+ <RT> contains <Table>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <TR>
+ parentStandardType != 'RT'
+
+ <RT> contains <TR>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <TH>
+ parentStandardType != 'RT'
+
+ <RT> contains <TH>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <TD>
+ parentStandardType != 'RT'
+
+ <RT> contains <TD>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <THead>
+ parentStandardType != 'RT'
+
+ <RT> contains <THead>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <TBody>
+ parentStandardType != 'RT'
+
+ <RT> contains <TBody>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <TFoot>
+ parentStandardType != 'RT'
+
+ <RT> contains <TFoot>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Caption>
+ parentStandardType != 'RT'
+
+ <RT> contains <Caption>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Figure>
+ parentStandardType != 'RT'
+
+ <RT> contains <Figure>
+
+
+
+
+
+
+
+
+ <RT> shall not contain <Formula>
+ parentStandardType != 'RT'
+
+ <RT> contains <Formula>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Document>
+ parentStandardType != 'RP'
+
+ <RP> contains <Document>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <DocumentFragment>
+ parentStandardType != 'RP'
+
+ <RP> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Part>
+ parentStandardType != 'RP'
+
+ <RP> contains <Part>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Art>
+ parentStandardType != 'RP'
+
+ <RP> contains <Art>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Div>
+ parentStandardType != 'RP'
+
+ <RP> contains <Div>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Sect>
+ parentStandardType != 'RP'
+
+ <RP> contains <Sect>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <TOC>
+ parentStandardType != 'RP'
+
+ <RP> contains <TOC>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <TOCI>
+ parentStandardType != 'RP'
+
+ <RP> contains <TOCI>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Aside>
+ parentStandardType != 'RP'
+
+ <RP> contains <Aside>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <BlockQuote>
+ parentStandardType != 'RP'
+
+ <RP> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <P>
+ parentStandardType != 'RP'
+
+ <RP> contains <P>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Note>
+ parentStandardType != 'RP'
+
+ <RP> contains <Note>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Code>
+ parentStandardType != 'RP'
+
+ <RP> contains <Code>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Hn>
+ parentStandardType != 'RP'
+
+ <RP> contains <Hn>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <H>
+ parentStandardType != 'RP'
+
+ <RP> contains <H>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Title>
+ parentStandardType != 'RP'
+
+ <RP> contains <Title>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Lbl>
+ parentStandardType != 'RP'
+
+ <RP> contains <Lbl>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Ruby>
+ parentStandardType != 'RP'
+
+ <RP> contains <Ruby>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <RB>
+ parentStandardType != 'RP'
+
+ <RP> contains <RB>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <RT>
+ parentStandardType != 'RP'
+
+ <RP> contains <RT>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <RP>
+ parentStandardType != 'RP'
+
+ <RP> contains <RP>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Warichu>
+ parentStandardType != 'RP'
+
+ <RP> contains <Warichu>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <WT>
+ parentStandardType != 'RP'
+
+ <RP> contains <WT>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <WP>
+ parentStandardType != 'RP'
+
+ <RP> contains <WP>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <FENote>
+ parentStandardType != 'RP'
+
+ <RP> contains <FENote>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Index>
+ parentStandardType != 'RP'
+
+ <RP> contains <Index>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <L>
+ parentStandardType != 'RP'
+
+ <RP> contains <L>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <LI>
+ parentStandardType != 'RP'
+
+ <RP> contains <LI>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <LBody>
+ parentStandardType != 'RP'
+
+ <RP> contains <LBody>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <BibEntry>
+ parentStandardType != 'RP'
+
+ <RP> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Table>
+ parentStandardType != 'RP'
+
+ <RP> contains <Table>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <TR>
+ parentStandardType != 'RP'
+
+ <RP> contains <TR>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <TH>
+ parentStandardType != 'RP'
+
+ <RP> contains <TH>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <TD>
+ parentStandardType != 'RP'
+
+ <RP> contains <TD>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <THead>
+ parentStandardType != 'RP'
+
+ <RP> contains <THead>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <TBody>
+ parentStandardType != 'RP'
+
+ <RP> contains <TBody>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <TFoot>
+ parentStandardType != 'RP'
+
+ <RP> contains <TFoot>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Caption>
+ parentStandardType != 'RP'
+
+ <RP> contains <Caption>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Figure>
+ parentStandardType != 'RP'
+
+ <RP> contains <Figure>
+
+
+
+
+
+
+
+
+ <RP> shall not contain <Formula>
+ parentStandardType != 'RP'
+
+ <RP> contains <Formula>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Document>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Document>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <DocumentFragment>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Part>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Part>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Art>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Art>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Div>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Div>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Sect>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Sect>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <TOC>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <TOC>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <TOCI>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Aside>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Aside>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <BlockQuote>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <P>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <P>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Note>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Note>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Code>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Code>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Hn>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Hn>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <H>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <H>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Title>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Title>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Sub>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Sub>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Lbl>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Lbl>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Em>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Em>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Strong>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Strong>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Span>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Span>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Quote>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Quote>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Link>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Link>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Reference>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Reference>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Annot>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Annot>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Form>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Form>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Ruby>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <RB>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <RB>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <RT>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <RT>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <RP>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <RP>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Warichu>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <FENote>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <FENote>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Index>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Index>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <L>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <L>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <LI>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <LI>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <LBody>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <LBody>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <BibEntry>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Table>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Table>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <TR>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <TR>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <TH>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <TH>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <TD>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <TD>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <THead>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <THead>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <TBody>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <TBody>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <TFoot>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Caption>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Caption>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Figure>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Figure>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Formula>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Formula>
+
+
+
+
+
+
+
+
+ <Warichu> shall not contain <Artifact>
+ parentStandardType != 'Warichu'
+
+ <Warichu> contains <Artifact>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Document>
+ parentStandardType != 'WT'
+
+ <WT> contains <Document>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <DocumentFragment>
+ parentStandardType != 'WT'
+
+ <WT> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Part>
+ parentStandardType != 'WT'
+
+ <WT> contains <Part>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Art>
+ parentStandardType != 'WT'
+
+ <WT> contains <Art>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Div>
+ parentStandardType != 'WT'
+
+ <WT> contains <Div>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Sect>
+ parentStandardType != 'WT'
+
+ <WT> contains <Sect>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <TOC>
+ parentStandardType != 'WT'
+
+ <WT> contains <TOC>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <TOCI>
+ parentStandardType != 'WT'
+
+ <WT> contains <TOCI>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Aside>
+ parentStandardType != 'WT'
+
+ <WT> contains <Aside>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <BlockQuote>
+ parentStandardType != 'WT'
+
+ <WT> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <P>
+ parentStandardType != 'WT'
+
+ <WT> contains <P>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Note>
+ parentStandardType != 'WT'
+
+ <WT> contains <Note>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Code>
+ parentStandardType != 'WT'
+
+ <WT> contains <Code>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Hn>
+ parentStandardType != 'WT'
+
+ <WT> contains <Hn>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <H>
+ parentStandardType != 'WT'
+
+ <WT> contains <H>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Title>
+ parentStandardType != 'WT'
+
+ <WT> contains <Title>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Lbl>
+ parentStandardType != 'WT'
+
+ <WT> contains <Lbl>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Ruby>
+ parentStandardType != 'WT'
+
+ <WT> contains <Ruby>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <RB>
+ parentStandardType != 'WT'
+
+ <WT> contains <RB>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <RT>
+ parentStandardType != 'WT'
+
+ <WT> contains <RT>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <RP>
+ parentStandardType != 'WT'
+
+ <WT> contains <RP>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Warichu>
+ parentStandardType != 'WT'
+
+ <WT> contains <Warichu>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <WT>
+ parentStandardType != 'WT'
+
+ <WT> contains <WT>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <WP>
+ parentStandardType != 'WT'
+
+ <WT> contains <WP>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <FENote>
+ parentStandardType != 'WT'
+
+ <WT> contains <FENote>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Index>
+ parentStandardType != 'WT'
+
+ <WT> contains <Index>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <L>
+ parentStandardType != 'WT'
+
+ <WT> contains <L>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <LI>
+ parentStandardType != 'WT'
+
+ <WT> contains <LI>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <LBody>
+ parentStandardType != 'WT'
+
+ <WT> contains <LBody>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <BibEntry>
+ parentStandardType != 'WT'
+
+ <WT> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Table>
+ parentStandardType != 'WT'
+
+ <WT> contains <Table>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <TR>
+ parentStandardType != 'WT'
+
+ <WT> contains <TR>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <TH>
+ parentStandardType != 'WT'
+
+ <WT> contains <TH>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <TD>
+ parentStandardType != 'WT'
+
+ <WT> contains <TD>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <THead>
+ parentStandardType != 'WT'
+
+ <WT> contains <THead>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <TBody>
+ parentStandardType != 'WT'
+
+ <WT> contains <TBody>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <TFoot>
+ parentStandardType != 'WT'
+
+ <WT> contains <TFoot>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Caption>
+ parentStandardType != 'WT'
+
+ <WT> contains <Caption>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Figure>
+ parentStandardType != 'WT'
+
+ <WT> contains <Figure>
+
+
+
+
+
+
+
+
+ <WT> shall not contain <Formula>
+ parentStandardType != 'WT'
+
+ <WT> contains <Formula>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Document>
+ parentStandardType != 'WP'
+
+ <WP> contains <Document>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <DocumentFragment>
+ parentStandardType != 'WP'
+
+ <WP> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Part>
+ parentStandardType != 'WP'
+
+ <WP> contains <Part>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Art>
+ parentStandardType != 'WP'
+
+ <WP> contains <Art>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Div>
+ parentStandardType != 'WP'
+
+ <WP> contains <Div>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Sect>
+ parentStandardType != 'WP'
+
+ <WP> contains <Sect>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <TOC>
+ parentStandardType != 'WP'
+
+ <WP> contains <TOC>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <TOCI>
+ parentStandardType != 'WP'
+
+ <WP> contains <TOCI>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Aside>
+ parentStandardType != 'WP'
+
+ <WP> contains <Aside>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <BlockQuote>
+ parentStandardType != 'WP'
+
+ <WP> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <P>
+ parentStandardType != 'WP'
+
+ <WP> contains <P>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Note>
+ parentStandardType != 'WP'
+
+ <WP> contains <Note>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Code>
+ parentStandardType != 'WP'
+
+ <WP> contains <Code>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Hn>
+ parentStandardType != 'WP'
+
+ <WP> contains <Hn>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <H>
+ parentStandardType != 'WP'
+
+ <WP> contains <H>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Title>
+ parentStandardType != 'WP'
+
+ <WP> contains <Title>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Lbl>
+ parentStandardType != 'WP'
+
+ <WP> contains <Lbl>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Ruby>
+ parentStandardType != 'WP'
+
+ <WP> contains <Ruby>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <RB>
+ parentStandardType != 'WP'
+
+ <WP> contains <RB>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <RT>
+ parentStandardType != 'WP'
+
+ <WP> contains <RT>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <RP>
+ parentStandardType != 'WP'
+
+ <WP> contains <RP>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Warichu>
+ parentStandardType != 'WP'
+
+ <WP> contains <Warichu>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <WT>
+ parentStandardType != 'WP'
+
+ <WP> contains <WT>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <WP>
+ parentStandardType != 'WP'
+
+ <WP> contains <WP>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <FENote>
+ parentStandardType != 'WP'
+
+ <WP> contains <FENote>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Index>
+ parentStandardType != 'WP'
+
+ <WP> contains <Index>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <L>
+ parentStandardType != 'WP'
+
+ <WP> contains <L>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <LI>
+ parentStandardType != 'WP'
+
+ <WP> contains <LI>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <LBody>
+ parentStandardType != 'WP'
+
+ <WP> contains <LBody>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <BibEntry>
+ parentStandardType != 'WP'
+
+ <WP> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Table>
+ parentStandardType != 'WP'
+
+ <WP> contains <Table>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <TR>
+ parentStandardType != 'WP'
+
+ <WP> contains <TR>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <TH>
+ parentStandardType != 'WP'
+
+ <WP> contains <TH>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <TD>
+ parentStandardType != 'WP'
+
+ <WP> contains <TD>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <THead>
+ parentStandardType != 'WP'
+
+ <WP> contains <THead>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <TBody>
+ parentStandardType != 'WP'
+
+ <WP> contains <TBody>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <TFoot>
+ parentStandardType != 'WP'
+
+ <WP> contains <TFoot>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Caption>
+ parentStandardType != 'WP'
+
+ <WP> contains <Caption>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Figure>
+ parentStandardType != 'WP'
+
+ <WP> contains <Figure>
+
+
+
+
+
+
+
+
+ <WP> shall not contain <Formula>
+ parentStandardType != 'WP'
+
+ <WP> contains <Formula>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <Document>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <Document>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <TOC>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <TOC>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <TOCI>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <TOCI>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <Hn>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <Hn>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <H>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <H>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <Title>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <Title>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <RB>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <RB>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <RT>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <RT>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <RP>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <RP>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <WT>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <WT>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <WP>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <WP>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <Index>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <Index>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <LI>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <LI>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <LBody>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <LBody>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <BibEntry>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <TR>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <TR>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <TH>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <TH>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <TD>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <TD>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <THead>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <THead>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <TBody>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <TBody>
+
+
+
+
+
+
+
+
+ <FENote> shall not contain <TFoot>
+ parentStandardType != 'FENote'
+
+ <FENote> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Document>
+ parentStandardType != 'Index'
+
+ <Index> contains <Document>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <DocumentFragment>
+ parentStandardType != 'Index'
+
+ <Index> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Art>
+ parentStandardType != 'Index'
+
+ <Index> contains <Art>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <TOC>
+ parentStandardType != 'Index'
+
+ <Index> contains <TOC>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <TOCI>
+ parentStandardType != 'Index'
+
+ <Index> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Aside>
+ parentStandardType != 'Index'
+
+ <Index> contains <Aside>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <BlockQuote>
+ parentStandardType != 'Index'
+
+ <Index> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Code>
+ parentStandardType != 'Index'
+
+ <Index> contains <Code>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Title>
+ parentStandardType != 'Index'
+
+ <Index> contains <Title>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Sub>
+ parentStandardType != 'Index'
+
+ <Index> contains <Sub>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Lbl>
+ parentStandardType != 'Index'
+
+ <Index> contains <Lbl>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Em>
+ parentStandardType != 'Index'
+
+ <Index> contains <Em>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Strong>
+ parentStandardType != 'Index'
+
+ <Index> contains <Strong>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Span>
+ parentStandardType != 'Index'
+
+ <Index> contains <Span>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Quote>
+ parentStandardType != 'Index'
+
+ <Index> contains <Quote>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Link>
+ parentStandardType != 'Index'
+
+ <Index> contains <Link>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Form>
+ parentStandardType != 'Index'
+
+ <Index> contains <Form>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Ruby>
+ parentStandardType != 'Index'
+
+ <Index> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <RB>
+ parentStandardType != 'Index'
+
+ <Index> contains <RB>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <RT>
+ parentStandardType != 'Index'
+
+ <Index> contains <RT>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <RP>
+ parentStandardType != 'Index'
+
+ <Index> contains <RP>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Warichu>
+ parentStandardType != 'Index'
+
+ <Index> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <WT>
+ parentStandardType != 'Index'
+
+ <Index> contains <WT>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <WP>
+ parentStandardType != 'Index'
+
+ <Index> contains <WP>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <Index>
+ parentStandardType != 'Index'
+
+ <Index> contains <Index>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <LI>
+ parentStandardType != 'Index'
+
+ <Index> contains <LI>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <LBody>
+ parentStandardType != 'Index'
+
+ <Index> contains <LBody>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <BibEntry>
+ parentStandardType != 'Index'
+
+ <Index> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <TR>
+ parentStandardType != 'Index'
+
+ <Index> contains <TR>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <TH>
+ parentStandardType != 'Index'
+
+ <Index> contains <TH>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <TD>
+ parentStandardType != 'Index'
+
+ <Index> contains <TD>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <THead>
+ parentStandardType != 'Index'
+
+ <Index> contains <THead>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <TBody>
+ parentStandardType != 'Index'
+
+ <Index> contains <TBody>
+
+
+
+
+
+
+
+
+ <Index> shall not contain <TFoot>
+ parentStandardType != 'Index'
+
+ <Index> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Index> shall not contain content items
+ hasContentItems == false
+
+ <Index> contains content item(s)
+
+
+
+
+
+
+
+
+ <L> shall not contain <Document>
+ parentStandardType != 'L'
+
+ <L> contains <Document>
+
+
+
+
+
+
+
+
+ <L> shall not contain <DocumentFragment>
+ parentStandardType != 'L'
+
+ <L> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Part>
+ parentStandardType != 'L'
+
+ <L> contains <Part>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Art>
+ parentStandardType != 'L'
+
+ <L> contains <Art>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Div>
+ parentStandardType != 'L'
+
+ <L> contains <Div>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Sect>
+ parentStandardType != 'L'
+
+ <L> contains <Sect>
+
+
+
+
+
+
+
+
+ <L> shall not contain <TOC>
+ parentStandardType != 'L'
+
+ <L> contains <TOC>
+
+
+
+
+
+
+
+
+ <L> shall not contain <TOCI>
+ parentStandardType != 'L'
+
+ <L> contains <TOCI>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Aside>
+ parentStandardType != 'L'
+
+ <L> contains <Aside>
+
+
+
+
+
+
+
+
+ <L> shall not contain <BlockQuote>
+ parentStandardType != 'L'
+
+ <L> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <L> shall not contain <P>
+ parentStandardType != 'L'
+
+ <L> contains <P>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Note>
+ parentStandardType != 'L'
+
+ <L> contains <Note>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Code>
+ parentStandardType != 'L'
+
+ <L> contains <Code>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Hn>
+ parentStandardType != 'L'
+
+ <L> contains <Hn>
+
+
+
+
+
+
+
+
+ <L> shall not contain <H>
+ parentStandardType != 'L'
+
+ <L> contains <H>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Title>
+ parentStandardType != 'L'
+
+ <L> contains <Title>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Sub>
+ parentStandardType != 'L'
+
+ <L> contains <Sub>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Lbl>
+ parentStandardType != 'L'
+
+ <L> contains <Lbl>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Em>
+ parentStandardType != 'L'
+
+ <L> contains <Em>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Strong>
+ parentStandardType != 'L'
+
+ <L> contains <Strong>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Span>
+ parentStandardType != 'L'
+
+ <L> contains <Span>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Quote>
+ parentStandardType != 'L'
+
+ <L> contains <Quote>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Link>
+ parentStandardType != 'L'
+
+ <L> contains <Link>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Reference>
+ parentStandardType != 'L'
+
+ <L> contains <Reference>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Annot>
+ parentStandardType != 'L'
+
+ <L> contains <Annot>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Form>
+ parentStandardType != 'L'
+
+ <L> contains <Form>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Ruby>
+ parentStandardType != 'L'
+
+ <L> contains <Ruby>
+
+
+
+
+
+
+
+
+ <L> shall not contain <RB>
+ parentStandardType != 'L'
+
+ <L> contains <RB>
+
+
+
+
+
+
+
+
+ <L> shall not contain <RT>
+ parentStandardType != 'L'
+
+ <L> contains <RT>
+
+
+
+
+
+
+
+
+ <L> shall not contain <RP>
+ parentStandardType != 'L'
+
+ <L> contains <RP>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Warichu>
+ parentStandardType != 'L'
+
+ <L> contains <Warichu>
+
+
+
+
+
+
+
+
+ <L> shall not contain <WT>
+ parentStandardType != 'L'
+
+ <L> contains <WT>
+
+
+
+
+
+
+
+
+ <L> shall not contain <WP>
+ parentStandardType != 'L'
+
+ <L> contains <WP>
+
+
+
+
+
+
+
+
+ <L> shall not contain <FENote>
+ parentStandardType != 'L'
+
+ <L> contains <FENote>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Index>
+ parentStandardType != 'L'
+
+ <L> contains <Index>
+
+
+
+
+
+
+
+
+ <L> shall not contain <LBody>
+ parentStandardType != 'L'
+
+ <L> contains <LBody>
+
+
+
+
+
+
+
+
+ <L> shall not contain <BibEntry>
+ parentStandardType != 'L'
+
+ <L> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Table>
+ parentStandardType != 'L'
+
+ <L> contains <Table>
+
+
+
+
+
+
+
+
+ <L> shall not contain <TR>
+ parentStandardType != 'L'
+
+ <L> contains <TR>
+
+
+
+
+
+
+
+
+ <L> shall not contain <TH>
+ parentStandardType != 'L'
+
+ <L> contains <TH>
+
+
+
+
+
+
+
+
+ <L> shall not contain <TD>
+ parentStandardType != 'L'
+
+ <L> contains <TD>
+
+
+
+
+
+
+
+
+ <L> shall not contain <THead>
+ parentStandardType != 'L'
+
+ <L> contains <THead>
+
+
+
+
+
+
+
+
+ <L> shall not contain <TBody>
+ parentStandardType != 'L'
+
+ <L> contains <TBody>
+
+
+
+
+
+
+
+
+ <L> shall not contain <TFoot>
+ parentStandardType != 'L'
+
+ <L> contains <TFoot>
+
+
+
+
+
+
+
+
+ <L> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <L> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Figure>
+ parentStandardType != 'L'
+
+ <L> contains <Figure>
+
+
+
+
+
+
+
+
+ <L> shall not contain <Formula>
+ parentStandardType != 'L'
+
+ <L> contains <Formula>
+
+
+
+
+
+
+
+
+ <L> shall not contain content items
+ hasContentItems == false
+
+ <L> contains content item(s)
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Document>
+ parentStandardType != 'LI'
+
+ <LI> contains <Document>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <DocumentFragment>
+ parentStandardType != 'LI'
+
+ <LI> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Part>
+ parentStandardType != 'LI'
+
+ <LI> contains <Part>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Art>
+ parentStandardType != 'LI'
+
+ <LI> contains <Art>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Sect>
+ parentStandardType != 'LI'
+
+ <LI> contains <Sect>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <TOC>
+ parentStandardType != 'LI'
+
+ <LI> contains <TOC>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <TOCI>
+ parentStandardType != 'LI'
+
+ <LI> contains <TOCI>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Aside>
+ parentStandardType != 'LI'
+
+ <LI> contains <Aside>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <BlockQuote>
+ parentStandardType != 'LI'
+
+ <LI> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <P>
+ parentStandardType != 'LI'
+
+ <LI> contains <P>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Note>
+ parentStandardType != 'LI'
+
+ <LI> contains <Note>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Code>
+ parentStandardType != 'LI'
+
+ <LI> contains <Code>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Hn>
+ parentStandardType != 'LI'
+
+ <LI> contains <Hn>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <H>
+ parentStandardType != 'LI'
+
+ <LI> contains <H>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Title>
+ parentStandardType != 'LI'
+
+ <LI> contains <Title>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Sub>
+ parentStandardType != 'LI'
+
+ <LI> contains <Sub>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Em>
+ parentStandardType != 'LI'
+
+ <LI> contains <Em>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Strong>
+ parentStandardType != 'LI'
+
+ <LI> contains <Strong>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Span>
+ parentStandardType != 'LI'
+
+ <LI> contains <Span>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Quote>
+ parentStandardType != 'LI'
+
+ <LI> contains <Quote>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Link>
+ parentStandardType != 'LI'
+
+ <LI> contains <Link>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Reference>
+ parentStandardType != 'LI'
+
+ <LI> contains <Reference>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Annot>
+ parentStandardType != 'LI'
+
+ <LI> contains <Annot>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Form>
+ parentStandardType != 'LI'
+
+ <LI> contains <Form>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Ruby>
+ parentStandardType != 'LI'
+
+ <LI> contains <Ruby>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <RB>
+ parentStandardType != 'LI'
+
+ <LI> contains <RB>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <RT>
+ parentStandardType != 'LI'
+
+ <LI> contains <RT>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <RP>
+ parentStandardType != 'LI'
+
+ <LI> contains <RP>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Warichu>
+ parentStandardType != 'LI'
+
+ <LI> contains <Warichu>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <WT>
+ parentStandardType != 'LI'
+
+ <LI> contains <WT>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <WP>
+ parentStandardType != 'LI'
+
+ <LI> contains <WP>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <FENote>
+ parentStandardType != 'LI'
+
+ <LI> contains <FENote>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Index>
+ parentStandardType != 'LI'
+
+ <LI> contains <Index>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <L>
+ parentStandardType != 'LI'
+
+ <LI> contains <L>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <LI>
+ parentStandardType != 'LI'
+
+ <LI> contains <LI>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <BibEntry>
+ parentStandardType != 'LI'
+
+ <LI> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Table>
+ parentStandardType != 'LI'
+
+ <LI> contains <Table>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <TR>
+ parentStandardType != 'LI'
+
+ <LI> contains <TR>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <TH>
+ parentStandardType != 'LI'
+
+ <LI> contains <TH>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <TD>
+ parentStandardType != 'LI'
+
+ <LI> contains <TD>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <THead>
+ parentStandardType != 'LI'
+
+ <LI> contains <THead>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <TBody>
+ parentStandardType != 'LI'
+
+ <LI> contains <TBody>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <TFoot>
+ parentStandardType != 'LI'
+
+ <LI> contains <TFoot>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Caption>
+ parentStandardType != 'LI'
+
+ <LI> contains <Caption>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Figure>
+ parentStandardType != 'LI'
+
+ <LI> contains <Figure>
+
+
+
+
+
+
+
+
+ <LI> shall not contain <Formula>
+ parentStandardType != 'LI'
+
+ <LI> contains <Formula>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <Document>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <Document>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <DocumentFragment>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <TOC>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <TOC>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <TOCI>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <TOCI>
+
+
+
+
+
+
+
+
+ <LBody> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <LBody> contains more than one <H>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <Title>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <Title>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <Lbl>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <Lbl>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <RB>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <RB>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <RT>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <RT>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <RP>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <RP>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <WT>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <WT>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <WP>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <WP>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <LI>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <LI>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <LBody>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <LBody>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <TR>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <TR>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <TH>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <TH>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <TD>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <TD>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <THead>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <THead>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <TBody>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <TBody>
+
+
+
+
+
+
+
+
+ <LBody> shall not contain <TFoot>
+ parentStandardType != 'LBody'
+
+ <LBody> contains <TFoot>
+
+
+
+
+
+
+
+
+ <LBody> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <LBody> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Document>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Document>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <DocumentFragment>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Art>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Art>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Sect>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Sect>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <TOC>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <TOC>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <TOCI>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <TOCI>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Aside>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Aside>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <BlockQuote>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Code>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Code>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Hn>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Hn>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <H>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <H>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Title>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Title>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Sub>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Sub>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Quote>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Quote>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Form>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Form>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Ruby>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Ruby>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <RB>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <RB>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <RT>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <RT>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <RP>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <RP>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Warichu>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Warichu>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <WT>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <WT>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <WP>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <WP>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Index>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Index>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <L>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <L>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <LI>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <LI>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <LBody>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <LBody>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <BibEntry>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Table>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Table>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <TR>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <TR>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <TH>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <TH>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <TD>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <TD>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <THead>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <THead>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <TBody>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <TBody>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <TFoot>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <TFoot>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Caption>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Caption>
+
+
+
+
+
+
+
+
+ <BibEntry> shall not contain <Formula>
+ parentStandardType != 'BibEntry'
+
+ <BibEntry> contains <Formula>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Document>
+ parentStandardType != 'Table'
+
+ <Table> contains <Document>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <DocumentFragment>
+ parentStandardType != 'Table'
+
+ <Table> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Part>
+ parentStandardType != 'Table'
+
+ <Table> contains <Part>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Art>
+ parentStandardType != 'Table'
+
+ <Table> contains <Art>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Div>
+ parentStandardType != 'Table'
+
+ <Table> contains <Div>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Sect>
+ parentStandardType != 'Table'
+
+ <Table> contains <Sect>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <TOC>
+ parentStandardType != 'Table'
+
+ <Table> contains <TOC>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <TOCI>
+ parentStandardType != 'Table'
+
+ <Table> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Aside>
+ parentStandardType != 'Table'
+
+ <Table> contains <Aside>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <BlockQuote>
+ parentStandardType != 'Table'
+
+ <Table> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <P>
+ parentStandardType != 'Table'
+
+ <Table> contains <P>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Note>
+ parentStandardType != 'Table'
+
+ <Table> contains <Note>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Code>
+ parentStandardType != 'Table'
+
+ <Table> contains <Code>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Hn>
+ parentStandardType != 'Table'
+
+ <Table> contains <Hn>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <H>
+ parentStandardType != 'Table'
+
+ <Table> contains <H>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Title>
+ parentStandardType != 'Table'
+
+ <Table> contains <Title>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Sub>
+ parentStandardType != 'Table'
+
+ <Table> contains <Sub>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Lbl>
+ parentStandardType != 'Table'
+
+ <Table> contains <Lbl>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Em>
+ parentStandardType != 'Table'
+
+ <Table> contains <Em>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Strong>
+ parentStandardType != 'Table'
+
+ <Table> contains <Strong>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Span>
+ parentStandardType != 'Table'
+
+ <Table> contains <Span>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Quote>
+ parentStandardType != 'Table'
+
+ <Table> contains <Quote>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Link>
+ parentStandardType != 'Table'
+
+ <Table> contains <Link>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Reference>
+ parentStandardType != 'Table'
+
+ <Table> contains <Reference>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Annot>
+ parentStandardType != 'Table'
+
+ <Table> contains <Annot>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Form>
+ parentStandardType != 'Table'
+
+ <Table> contains <Form>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Ruby>
+ parentStandardType != 'Table'
+
+ <Table> contains <Ruby>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <RB>
+ parentStandardType != 'Table'
+
+ <Table> contains <RB>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <RT>
+ parentStandardType != 'Table'
+
+ <Table> contains <RT>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <RP>
+ parentStandardType != 'Table'
+
+ <Table> contains <RP>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Warichu>
+ parentStandardType != 'Table'
+
+ <Table> contains <Warichu>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <WT>
+ parentStandardType != 'Table'
+
+ <Table> contains <WT>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <WP>
+ parentStandardType != 'Table'
+
+ <Table> contains <WP>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <FENote>
+ parentStandardType != 'Table'
+
+ <Table> contains <FENote>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Index>
+ parentStandardType != 'Table'
+
+ <Table> contains <Index>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <L>
+ parentStandardType != 'Table'
+
+ <Table> contains <L>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <LI>
+ parentStandardType != 'Table'
+
+ <Table> contains <LI>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <LBody>
+ parentStandardType != 'Table'
+
+ <Table> contains <LBody>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <BibEntry>
+ parentStandardType != 'Table'
+
+ <Table> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Table>
+ parentStandardType != 'Table'
+
+ <Table> contains <Table>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <TH>
+ parentStandardType != 'Table'
+
+ <Table> contains <TH>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <TD>
+ parentStandardType != 'Table'
+
+ <Table> contains <TD>
+
+
+
+
+
+
+
+
+ <Table> shall contain at most one <THead>
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1
+
+ <Table> contains more than one <THead>
+
+
+
+
+
+
+
+
+ <Table> shall contain at most one <TFoot>
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1
+
+ <Table> contains more than one <TFoot>
+
+
+
+
+
+
+
+
+ <Table> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <Table> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Figure>
+ parentStandardType != 'Table'
+
+ <Table> contains <Figure>
+
+
+
+
+
+
+
+
+ <Table> shall not contain <Formula>
+ parentStandardType != 'Table'
+
+ <Table> contains <Formula>
+
+
+
+
+
+
+
+
+ <Table> shall not contain content items
+ hasContentItems == false
+
+ <Table> contains content item(s)
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Document>
+ parentStandardType != 'TR'
+
+ <TR> contains <Document>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <DocumentFragment>
+ parentStandardType != 'TR'
+
+ <TR> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Part>
+ parentStandardType != 'TR'
+
+ <TR> contains <Part>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Art>
+ parentStandardType != 'TR'
+
+ <TR> contains <Art>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Div>
+ parentStandardType != 'TR'
+
+ <TR> contains <Div>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Sect>
+ parentStandardType != 'TR'
+
+ <TR> contains <Sect>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <TOC>
+ parentStandardType != 'TR'
+
+ <TR> contains <TOC>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <TOCI>
+ parentStandardType != 'TR'
+
+ <TR> contains <TOCI>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Aside>
+ parentStandardType != 'TR'
+
+ <TR> contains <Aside>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <BlockQuote>
+ parentStandardType != 'TR'
+
+ <TR> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <P>
+ parentStandardType != 'TR'
+
+ <TR> contains <P>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Note>
+ parentStandardType != 'TR'
+
+ <TR> contains <Note>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Code>
+ parentStandardType != 'TR'
+
+ <TR> contains <Code>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Hn>
+ parentStandardType != 'TR'
+
+ <TR> contains <Hn>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <H>
+ parentStandardType != 'TR'
+
+ <TR> contains <H>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Title>
+ parentStandardType != 'TR'
+
+ <TR> contains <Title>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Sub>
+ parentStandardType != 'TR'
+
+ <TR> contains <Sub>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Lbl>
+ parentStandardType != 'TR'
+
+ <TR> contains <Lbl>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Em>
+ parentStandardType != 'TR'
+
+ <TR> contains <Em>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Strong>
+ parentStandardType != 'TR'
+
+ <TR> contains <Strong>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Span>
+ parentStandardType != 'TR'
+
+ <TR> contains <Span>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Quote>
+ parentStandardType != 'TR'
+
+ <TR> contains <Quote>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Link>
+ parentStandardType != 'TR'
+
+ <TR> contains <Link>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Reference>
+ parentStandardType != 'TR'
+
+ <TR> contains <Reference>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Annot>
+ parentStandardType != 'TR'
+
+ <TR> contains <Annot>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Form>
+ parentStandardType != 'TR'
+
+ <TR> contains <Form>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Ruby>
+ parentStandardType != 'TR'
+
+ <TR> contains <Ruby>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <RB>
+ parentStandardType != 'TR'
+
+ <TR> contains <RB>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <RT>
+ parentStandardType != 'TR'
+
+ <TR> contains <RT>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <RP>
+ parentStandardType != 'TR'
+
+ <TR> contains <RP>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Warichu>
+ parentStandardType != 'TR'
+
+ <TR> contains <Warichu>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <WT>
+ parentStandardType != 'TR'
+
+ <TR> contains <WT>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <WP>
+ parentStandardType != 'TR'
+
+ <TR> contains <WP>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <FENote>
+ parentStandardType != 'TR'
+
+ <TR> contains <FENote>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Index>
+ parentStandardType != 'TR'
+
+ <TR> contains <Index>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <L>
+ parentStandardType != 'TR'
+
+ <TR> contains <L>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <LI>
+ parentStandardType != 'TR'
+
+ <TR> contains <LI>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <LBody>
+ parentStandardType != 'TR'
+
+ <TR> contains <LBody>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <BibEntry>
+ parentStandardType != 'TR'
+
+ <TR> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Table>
+ parentStandardType != 'TR'
+
+ <TR> contains <Table>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <TR>
+ parentStandardType != 'TR'
+
+ <TR> contains <TR>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <THead>
+ parentStandardType != 'TR'
+
+ <TR> contains <THead>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <TBody>
+ parentStandardType != 'TR'
+
+ <TR> contains <TBody>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <TFoot>
+ parentStandardType != 'TR'
+
+ <TR> contains <TFoot>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Caption>
+ parentStandardType != 'TR'
+
+ <TR> contains <Caption>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Figure>
+ parentStandardType != 'TR'
+
+ <TR> contains <Figure>
+
+
+
+
+
+
+
+
+ <TR> shall not contain <Formula>
+ parentStandardType != 'TR'
+
+ <TR> contains <Formula>
+
+
+
+
+
+
+
+
+ <TR> shall not contain content items
+ hasContentItems == false
+
+ <TR> contains content item(s)
+
+
+
+
+
+
+
+
+ <TH> shall not contain <Document>
+ parentStandardType != 'TH'
+
+ <TH> contains <Document>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <DocumentFragment>
+ parentStandardType != 'TH'
+
+ <TH> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <Part>
+ parentStandardType != 'TH'
+
+ <TH> contains <Part>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <TOC>
+ parentStandardType != 'TH'
+
+ <TH> contains <TOC>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <TOCI>
+ parentStandardType != 'TH'
+
+ <TH> contains <TOCI>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <Aside>
+ parentStandardType != 'TH'
+
+ <TH> contains <Aside>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <BlockQuote>
+ parentStandardType != 'TH'
+
+ <TH> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <TH> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <TH> contains more than one <H>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <Title>
+ parentStandardType != 'TH'
+
+ <TH> contains <Title>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <Sub>
+ parentStandardType != 'TH'
+
+ <TH> contains <Sub>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <RB>
+ parentStandardType != 'TH'
+
+ <TH> contains <RB>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <RT>
+ parentStandardType != 'TH'
+
+ <TH> contains <RT>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <RP>
+ parentStandardType != 'TH'
+
+ <TH> contains <RP>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <WT>
+ parentStandardType != 'TH'
+
+ <TH> contains <WT>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <WP>
+ parentStandardType != 'TH'
+
+ <TH> contains <WP>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <LI>
+ parentStandardType != 'TH'
+
+ <TH> contains <LI>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <LBody>
+ parentStandardType != 'TH'
+
+ <TH> contains <LBody>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <TR>
+ parentStandardType != 'TH'
+
+ <TH> contains <TR>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <TH>
+ parentStandardType != 'TH'
+
+ <TH> contains <TH>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <TD>
+ parentStandardType != 'TH'
+
+ <TH> contains <TD>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <THead>
+ parentStandardType != 'TH'
+
+ <TH> contains <THead>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <TBody>
+ parentStandardType != 'TH'
+
+ <TH> contains <TBody>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <TFoot>
+ parentStandardType != 'TH'
+
+ <TH> contains <TFoot>
+
+
+
+
+
+
+
+
+ <TH> shall not contain <Caption>
+ parentStandardType != 'TH'
+
+ <TH> contains <Caption>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <Document>
+ parentStandardType != 'TD'
+
+ <TD> contains <Document>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <DocumentFragment>
+ parentStandardType != 'TD'
+
+ <TD> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <Part>
+ parentStandardType != 'TD'
+
+ <TD> contains <Part>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <TOC>
+ parentStandardType != 'TD'
+
+ <TD> contains <TOC>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <TOCI>
+ parentStandardType != 'TD'
+
+ <TD> contains <TOCI>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <Aside>
+ parentStandardType != 'TD'
+
+ <TD> contains <Aside>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <BlockQuote>
+ parentStandardType != 'TD'
+
+ <TD> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <TD> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <TD> contains more than one <H>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <Title>
+ parentStandardType != 'TD'
+
+ <TD> contains <Title>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <Sub>
+ parentStandardType != 'TD'
+
+ <TD> contains <Sub>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <RB>
+ parentStandardType != 'TD'
+
+ <TD> contains <RB>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <RT>
+ parentStandardType != 'TD'
+
+ <TD> contains <RT>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <RP>
+ parentStandardType != 'TD'
+
+ <TD> contains <RP>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <WT>
+ parentStandardType != 'TD'
+
+ <TD> contains <WT>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <WP>
+ parentStandardType != 'TD'
+
+ <TD> contains <WP>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <LI>
+ parentStandardType != 'TD'
+
+ <TD> contains <LI>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <LBody>
+ parentStandardType != 'TD'
+
+ <TD> contains <LBody>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <TR>
+ parentStandardType != 'TD'
+
+ <TD> contains <TR>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <TH>
+ parentStandardType != 'TD'
+
+ <TD> contains <TH>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <TD>
+ parentStandardType != 'TD'
+
+ <TD> contains <TD>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <THead>
+ parentStandardType != 'TD'
+
+ <TD> contains <THead>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <TBody>
+ parentStandardType != 'TD'
+
+ <TD> contains <TBody>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <TFoot>
+ parentStandardType != 'TD'
+
+ <TD> contains <TFoot>
+
+
+
+
+
+
+
+
+ <TD> shall not contain <Caption>
+ parentStandardType != 'TD'
+
+ <TD> contains <Caption>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Document>
+ parentStandardType != 'THead'
+
+ <THead> contains <Document>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <DocumentFragment>
+ parentStandardType != 'THead'
+
+ <THead> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Part>
+ parentStandardType != 'THead'
+
+ <THead> contains <Part>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Art>
+ parentStandardType != 'THead'
+
+ <THead> contains <Art>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Div>
+ parentStandardType != 'THead'
+
+ <THead> contains <Div>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Sect>
+ parentStandardType != 'THead'
+
+ <THead> contains <Sect>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <TOC>
+ parentStandardType != 'THead'
+
+ <THead> contains <TOC>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <TOCI>
+ parentStandardType != 'THead'
+
+ <THead> contains <TOCI>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Aside>
+ parentStandardType != 'THead'
+
+ <THead> contains <Aside>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <BlockQuote>
+ parentStandardType != 'THead'
+
+ <THead> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <P>
+ parentStandardType != 'THead'
+
+ <THead> contains <P>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Note>
+ parentStandardType != 'THead'
+
+ <THead> contains <Note>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Code>
+ parentStandardType != 'THead'
+
+ <THead> contains <Code>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Hn>
+ parentStandardType != 'THead'
+
+ <THead> contains <Hn>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <H>
+ parentStandardType != 'THead'
+
+ <THead> contains <H>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Title>
+ parentStandardType != 'THead'
+
+ <THead> contains <Title>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Sub>
+ parentStandardType != 'THead'
+
+ <THead> contains <Sub>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Lbl>
+ parentStandardType != 'THead'
+
+ <THead> contains <Lbl>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Em>
+ parentStandardType != 'THead'
+
+ <THead> contains <Em>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Strong>
+ parentStandardType != 'THead'
+
+ <THead> contains <Strong>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Span>
+ parentStandardType != 'THead'
+
+ <THead> contains <Span>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Quote>
+ parentStandardType != 'THead'
+
+ <THead> contains <Quote>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Link>
+ parentStandardType != 'THead'
+
+ <THead> contains <Link>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Reference>
+ parentStandardType != 'THead'
+
+ <THead> contains <Reference>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Annot>
+ parentStandardType != 'THead'
+
+ <THead> contains <Annot>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Form>
+ parentStandardType != 'THead'
+
+ <THead> contains <Form>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Ruby>
+ parentStandardType != 'THead'
+
+ <THead> contains <Ruby>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <RB>
+ parentStandardType != 'THead'
+
+ <THead> contains <RB>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <RT>
+ parentStandardType != 'THead'
+
+ <THead> contains <RT>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <RP>
+ parentStandardType != 'THead'
+
+ <THead> contains <RP>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Warichu>
+ parentStandardType != 'THead'
+
+ <THead> contains <Warichu>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <WT>
+ parentStandardType != 'THead'
+
+ <THead> contains <WT>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <WP>
+ parentStandardType != 'THead'
+
+ <THead> contains <WP>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <FENote>
+ parentStandardType != 'THead'
+
+ <THead> contains <FENote>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Index>
+ parentStandardType != 'THead'
+
+ <THead> contains <Index>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <L>
+ parentStandardType != 'THead'
+
+ <THead> contains <L>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <LI>
+ parentStandardType != 'THead'
+
+ <THead> contains <LI>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <LBody>
+ parentStandardType != 'THead'
+
+ <THead> contains <LBody>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <BibEntry>
+ parentStandardType != 'THead'
+
+ <THead> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Table>
+ parentStandardType != 'THead'
+
+ <THead> contains <Table>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <TH>
+ parentStandardType != 'THead'
+
+ <THead> contains <TH>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <TD>
+ parentStandardType != 'THead'
+
+ <THead> contains <TD>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <THead>
+ parentStandardType != 'THead'
+
+ <THead> contains <THead>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <TBody>
+ parentStandardType != 'THead'
+
+ <THead> contains <TBody>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <TFoot>
+ parentStandardType != 'THead'
+
+ <THead> contains <TFoot>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Caption>
+ parentStandardType != 'THead'
+
+ <THead> contains <Caption>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Figure>
+ parentStandardType != 'THead'
+
+ <THead> contains <Figure>
+
+
+
+
+
+
+
+
+ <THead> shall not contain <Formula>
+ parentStandardType != 'THead'
+
+ <THead> contains <Formula>
+
+
+
+
+
+
+
+
+ <THead> shall not contain content items
+ hasContentItems == false
+
+ <THead> contains content item(s)
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Document>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Document>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <DocumentFragment>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Part>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Part>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Art>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Art>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Div>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Div>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Sect>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Sect>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <TOC>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <TOC>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <TOCI>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <TOCI>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Aside>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Aside>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <BlockQuote>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <P>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <P>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Note>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Note>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Code>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Code>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Hn>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Hn>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <H>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <H>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Title>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Title>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Sub>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Sub>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Lbl>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Lbl>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Em>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Em>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Strong>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Strong>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Span>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Span>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Quote>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Quote>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Link>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Link>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Reference>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Reference>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Annot>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Annot>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Form>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Form>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Ruby>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Ruby>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <RB>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <RB>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <RT>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <RT>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <RP>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <RP>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Warichu>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Warichu>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <WT>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <WT>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <WP>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <WP>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <FENote>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <FENote>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Index>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Index>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <L>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <L>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <LI>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <LI>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <LBody>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <LBody>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <BibEntry>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Table>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Table>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <TH>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <TH>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <TD>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <TD>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <THead>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <THead>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <TBody>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <TBody>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <TFoot>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <TFoot>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Caption>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Caption>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Figure>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Figure>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain <Formula>
+ parentStandardType != 'TBody'
+
+ <TBody> contains <Formula>
+
+
+
+
+
+
+
+
+ <TBody> shall not contain content items
+ hasContentItems == false
+
+ <TBody> contains content item(s)
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Document>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Document>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <DocumentFragment>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Part>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Part>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Art>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Art>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Div>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Div>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Sect>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Sect>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <TOC>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <TOC>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <TOCI>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <TOCI>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Aside>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Aside>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <BlockQuote>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <BlockQuote>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <P>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <P>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Note>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Note>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Code>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Code>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Hn>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Hn>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <H>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <H>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Title>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Title>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Sub>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Sub>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Lbl>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Lbl>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Em>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Em>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Strong>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Strong>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Span>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Span>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Quote>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Quote>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Link>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Link>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Reference>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Reference>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Annot>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Annot>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Form>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Form>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Ruby>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Ruby>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <RB>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <RB>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <RT>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <RT>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <RP>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <RP>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Warichu>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Warichu>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <WT>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <WT>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <WP>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <WP>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <FENote>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <FENote>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Index>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Index>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <L>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <L>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <LI>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <LI>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <LBody>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <LBody>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <BibEntry>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <BibEntry>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Table>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Table>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <TH>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <TH>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <TD>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <TD>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <THead>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <THead>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <TBody>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <TBody>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <TFoot>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <TFoot>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Caption>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Caption>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Figure>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Figure>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain <Formula>
+ parentStandardType != 'TFoot'
+
+ <TFoot> contains <Formula>
+
+
+
+
+
+
+
+
+ <TFoot> shall not contain content items
+ hasContentItems == false
+
+ <TFoot> contains content item(s)
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <Document>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <Document>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <TOC>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <TOC>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <TOCI>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Caption> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <Caption> contains more than one <H>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <Title>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <Title>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <RB>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <RB>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <RT>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <RT>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <RP>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <RP>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <WT>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <WT>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <WP>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <WP>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <LI>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <LI>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <LBody>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <LBody>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <TR>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <TR>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <TH>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <TH>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <TD>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <TD>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <THead>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <THead>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <TBody>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <TBody>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <TFoot>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Caption> shall not contain <Caption>
+ parentStandardType != 'Caption'
+
+ <Caption> contains <Caption>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <Document>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <Document>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <DocumentFragment>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <TOC>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <TOC>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <TOCI>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Figure> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <Figure> contains more than one <H>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <Title>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <Title>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <RB>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <RB>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <RT>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <RT>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <RP>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <RP>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <WT>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <WT>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <WP>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <WP>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <LI>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <LI>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <LBody>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <LBody>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <TR>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <TR>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <TH>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <TH>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <TD>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <TD>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <THead>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <THead>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <TBody>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <TBody>
+
+
+
+
+
+
+
+
+ <Figure> shall not contain <TFoot>
+ parentStandardType != 'Figure'
+
+ <Figure> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Figure> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <Figure> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <Document>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <Document>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <DocumentFragment>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <DocumentFragment>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <Art>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <Art>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <Sect>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <Sect>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <TOC>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <TOC>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <TOCI>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <TOCI>
+
+
+
+
+
+
+
+
+ <Formula> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <Formula> contains more than one <H>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <Title>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <Title>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <RB>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <RB>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <RT>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <RT>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <RP>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <RP>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <WT>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <WT>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <WP>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <WP>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <LI>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <LI>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <LBody>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <LBody>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <TR>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <TR>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <TH>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <TH>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <TD>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <TD>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <THead>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <THead>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <TBody>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <TBody>
+
+
+
+
+
+
+
+
+ <Formula> shall not contain <TFoot>
+ parentStandardType != 'Formula'
+
+ <Formula> contains <TFoot>
+
+
+
+
+
+
+
+
+ <Formula> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <Formula> contains more than one <Caption>
+
+
+
+
+
+
+
+
+ <Artifact> shall contain at most one <H>
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ <Artifact> contains more than one <H>
+
+
+
+
+
+
+
+
+ <Artifact> shall contain at most one <Caption>
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1
+
+ <Artifact> contains more than one <Caption>
+
+
+
+
+
+
+
+
+
+ false
+ containsConfigs
+
+
+
diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml
new file mode 100644
index 00000000..737217c1
--- /dev/null
+++ b/PDF_UA/PDFUA-2.xml
@@ -0,0 +1,1125 @@
+
+
+
+ PDF/UA-2 validation profile
+ Validation rules against ISO 14289-2:2024
+
+
+
+
+
+ The PDF/UA version of a file shall be specified in the value of the Metadata entry in the document catalog using the PDF/UA identification schema
+ UAIdentification_size == 1
+
+ The document metadata stream doesn't contains PDF/UA Identification Schema
+
+
+
+
+
+
+ The value of "pdfuaid:part" shall be the part number of the International Standard to which the file conforms
+ part == 2
+
+ The "part" property of the PDF/UA Identification Schema is %1 instead of 2 for PDF/UA-2 conforming file
+
+ part
+
+
+
+
+
+
+ Property "part" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
+ partPrefix == null || partPrefix == "pdfuaid"
+
+ Property "part" of the PDF/UA Identification Schema has invalid namespace prefix %1
+
+ partPrefix
+
+
+
+
+
+
+ Property "rev" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
+ revPrefix == null || revPrefix == "pdfuaid"
+
+ Property "rev" of the PDF/UA Identification Schema has invalid namespace prefix %1
+
+ revPrefix
+
+
+
+
+
+
+ The value of "pdfuaid:rev" shall be the four digit year
+ /^\d{4}$/.test(rev)
+
+ The value of "pdfuaid:rev" (%1) is not the four digit year
+
+ rev
+
+
+
+
+
+
+ The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document catalog dictionary, as described in ISO 32000-2:2020, 14.7
+ StructTreeRoot_size == 1
+
+ StructTreeRoot entry is not present in the document catalog
+
+
+
+
+
+
+
+
+ A structure element dictionary shall contain the P (parent) entry according to ISO 32000-2:2020, 14.7.2, Table 323
+ containsParent == true
+
+ A structure element dictionary does not contain the P (parent) entry
+
+
+
+
+
+
+
+
+ Content that is not considered real shall be an artifact
+ isTaggedContent == true || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0
+
+ Content is neither marked as Artifact nor tagged as real content
+
+
+
+
+
+
+ All structure elements shall belong to, or be role mapped to, at least one of the following namespaces specified in ISO 32000-2:2020, 14.8.6: — the PDF 1.7 namespace; — the PDF 2.0 namespace; — the MathML namespace
+ isNotMappedToStandardType == false
+
+ Non-standard structure type %1 is not mapped to a standard type
+
+ valueS
+
+
+
+
+
+
+
+
+ A circular mapping shall not exist
+ circularMappingExist != true
+
+ A circular mapping exists for %1 structure type
+
+ valueS
+
+
+
+
+
+
+ Within a given explicitly provided namespace, structure types shall not be role mapped to other structure types in the same namespace
+ roleMapToSameNamespaceTag == null
+
+ Structure type %1 is role mapped to other structure type in the same namespace
+
+ roleMapToSameNamespaceTag
+
+
+
+
+
+
+ All structure elements shall belong to, or be role mapped to, at least one of the following namespaces specified in ISO 32000-2:2020, 14.8.6: — the PDF 1.7 namespace; — the PDF 2.0 namespace; — the MathML namespace
+ remappedStandardType == null
+
+ The standard structure type %1 is remapped to a non-standard type
+
+ remappedStandardType
+
+
+
+
+
+
+
+
+ The structure tree root shall contain a single Document structure element as its only child, as specified in ISO 32000-2:2020, Annex L and ISO/TS 32005
+ kidsStandardTypes == 'Document'
+
+ The structure tree root contains %1 element(s) instead of a single Document structure element
+
+ kidsStandardTypes.replaceAll('&', ',')
+
+
+
+
+
+
+
+
+
+
+
+ The structure tree root shall contain a single Document structure element as its only child. The namespace for that element shall be specified as the PDF 2.0 namespace
+ kidsStandardTypes != 'Document' || firstChildStandardTypeNamespaceURL == 'http://iso.org/pdf2/ssn'
+
+ The structure tree root contains a single Document structure element, but this element is not within the PDF 2.0 namespace (namespace URI = %1)
+
+ firstChildStandardTypeNamespaceURL
+
+
+
+
+
+
+
+
+
+
+
+ Each TOCI in the table of contents shall identify the target of the reference using the Ref entry, either directly on the TOCI structure element itself or on one of its child structure elements
+ containsRef == true
+
+ TOCI in the TOC does not contain the Ref entry, neither directly on the TOCI structure element itself nor on its descendant structure elements
+
+
+
+
+
+
+ Conforming files shall not use the H structure type
+ false
+
+ Document uses H structure type
+
+
+
+
+
+
+ The Note standard structure type shall not be present in conforming documents unless role mapped to a structure element in the PDF 2.0 namespace
+ false
+
+ Document uses Note structure type
+
+
+
+
+
+
+ Real content that refers to footnotes or endnotes (real content enclosed in FENote structure elements) shall use the Ref entry on the referring structure element to reference the FENote. The corresponding FENote shall also use the Ref entry to identify all citations that reference it
+ orphanRefs == null
+
+ Ref entry in the FENote does not reference structure elements with object numbers %1, while these structure elements reference this FENote
+
+ orphanRefs
+
+
+
+
+
+
+ Real content that refers to footnotes or endnotes (real content enclosed in FENote structure elements) shall use the Ref entry on the referring structure element to reference the FENote. The corresponding FENote shall also use the Ref entry to identify all citations that reference it
+ ghostRefs == null
+
+ Ref entry in the FENote reference structure elements with object numbers %1, while these structure elements do not reference this FENote
+
+ ghostRefs
+
+
+
+
+
+
+ The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None
+ NoteType == 'Footnote' || NoteType == 'Endnote' || NoteType == 'None'
+
+ NoteType attribute of the FENote structure element has value %1 instead of Footnote, Endnote or None
+
+ NoteType
+
+
+
+
+
+
+ A link annotation and its associated content shall be enclosed in either a Link or Reference structure element
+ structParentStandardType == 'Link' || structParentStandardType == 'Reference'
+
+ A Link annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Link or Reference
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+ Link annotations that target different locations shall be in separate Link or Reference structure elements
+ differentTargetAnnotObjectKey == null
+
+ Struct element %1 contains Link annotations %1 and %2 that target different locations
+
+ structParentObjectKey
+ objectKey
+ differentTargetAnnotObjectKey
+
+
+
+
+
+
+ Multiple link annotations shall be included in a single Link or Reference structure element if they target the same location and are semantically perceived to be a single link
+ sameTargetAnnotObjectKey == null
+
+ Annotations %1 and %2 target the same location, but are included into different structure elements
+
+ objectKey
+ sameTargetAnnotObjectKey
+
+
+
+
+
+
+ A Ruby structure element shall contain a single RB structure element and a single RT structure element or a Ruby structure element shall consist of a four-element subsequence: RB, RP, RT, RP
+ kidsStandardTypes == 'RB&RT' || kidsStandardTypes == 'RB&RP&RT&RP'
+
+ The Ruby structure element has invalid sequence of children: %1
+
+ kidsStandardTypes.split('&').toString()
+
+
+
+
+
+
+ Content typeset as warichu shall be tagged in a three-element sequence consisting of the structure elements WP, WT and WP, grouped inside a Warichu structure element
+ kidsStandardTypes == 'WP&WT&WP'
+
+ The Warichu structure element has invalid sequence of children: %1
+
+ kidsStandardTypes.split('&').toString()
+
+
+
+
+
+
+ If Lbl structure elements are present, the ListNumbering attribute shall be present on the respective L structure element; in such cases the value None shall not be used
+ containsLabels == false || ListNumbering != 'None'
+
+ List items contain Lbl structure elements, but the ListNumbering attribute is not present on the respective L structure element or it has value None
+
+
+
+
+
+
+
+
+ Any real content within an LI structure element that is not enclosed in an Lbl structure element shall be enclosed in an LBody structure element
+ hasContentItems == false
+
+ The LI structure element contains real content as its direct child instead of enclosing it into Lbl or LBody structure elements
+
+
+
+
+
+
+ Tables shall be regular. A table cell shall not have intersection with other cells
+ hasIntersection != true
+
+ Table cell has intersection with other cells
+
+
+
+
+
+
+ Tables shall be regular. Row groupings formed by THead, TBody and TFoot structure elements shall be regular. Table columns shall have the same number of rows (taking into account row spans) in table and each row groupings formed by THead, TBody and TFoot structure elements
+ numberOfColumnWithWrongRowSpan == null
+
+ Columns 1 and %1 span different number of rows in table, or within one of row groupings formed by THead, TBody and TFoot structure elements
+
+ numberOfColumnWithWrongRowSpan + 1
+
+
+
+
+
+
+ Tables shall be regular. Table rows shall have the same number of columns (taking into account column spans)
+ numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null
+
+ Table rows 1 and %1 span different number of columns
+
+ numberOfRowWithWrongColumnSpan + 1
+
+
+
+
+
+
+ Tables shall be regular. Table rows shall have the same number of columns (taking into account column spans)
+ numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null
+
+ Table rows 1 and %1 span different number of columns (%2 and %3 respectively)
+
+ numberOfRowWithWrongColumnSpan + 1
+ columnSpan
+ wrongColumnSpan
+
+
+
+
+
+
+ When a table contains header cells, that table shall provide sufficient semantic information to allow accurate determination of which of its table header cells (structure element TH) pertain to other cells as specified in ISO 32000-2:2020, 14.8.5.7
+ hasConnectedHeader != false || unknownHeaders != ''
+
+ TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically
+
+
+
+
+
+
+
+
+
+ When a table contains header cells, that table shall provide sufficient semantic information to allow accurate determination of which of its table header cells (structure element TH) pertain to other cells as specified in ISO 32000-2:2020, 14.8.5.7
+ hasConnectedHeader != false || unknownHeaders == ''
+
+ TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically
+
+ unknownHeaders
+
+
+
+
+
+
+
+
+
+ When present, the Caption element shall be the first or the last child of the structure element
+ kidsStandardTypes.indexOf('&Caption&') < 0
+
+ Structure element %1 contains Caption as its %2 child instead of first or last one
+
+ objectKey
+ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2
+
+
+
+
+
+
+ A Figure structure element shall have at least one of the following properties: a) an alternate description (Alt property), as specified in ISO 32000-2:2020, 14.9.3; b) a replacement text (ActualText property) that represents the content enclosed by the Figure structure element
+ Alt != null || ActualText != null
+
+ Figure structure element neither has an alternate description nor a replacement text
+
+
+
+
+
+
+
+
+ The math structure type shall occur only as a child of a Formula structure element
+ parentStandardType == 'Formula' || parentStandardType == 'MathML'
+
+ The math structure type is nested within %1 tag instead of Formula
+
+ parentStandardType
+
+
+
+
+
+
+ In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present
+ isRealContent == false || unicodePUA == false || actualTextPresent == true || altPresent == true
+
+ Real content maps to Unicode PUA values, but ActualText and Alt entry are not present
+
+
+
+
+
+
+ The ActualText entry shall not contain any PUA values
+ containsPUA == false
+
+ The ActualText entry contains Unicode PUA (Private Use Area) code points
+
+
+
+
+
+
+ The Alt entry shall not contain any PUA values
+ containsPUA == false
+
+ The Alt entry contains Unicode PUA (Private Use Area) code points
+
+
+
+
+
+
+ The default natural language for content and text strings shall be specified using the Lang entry, with a non-empty value, in the catalog dictionary
+ Lang_size > 0
+
+ Catalog dictionary does not contain Lang entry
+
+
+
+
+
+
+ If the Lang entry is present in the document's Catalog dictionary or in a structure element dictionary or property list, its value shall be a language identifier as described in ISO 32000-2:2020, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages
+ /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue)
+
+ Value %1 of the Lang entry is not a Language-Tag
+
+ unicodeValue
+
+
+
+
+
+
+
+
+
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary shall have the following relationship: - If the Encoding key in the Type 0 font dictionary has a value of Identity-H or Identity-V, then any values for the Registry, Ordering, and Supplement keys may be used in the CIDSystemInfo dictionary of the CIDFont. - Otherwise the corresponding values of the Registry and Ordering keys in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement)
+
+ CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+ CIDFontSupplement
+ CMapSupplement
+
+
+
+
+
+
+ All embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-2:2020, Table 115
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+ All CMaps used within a file that conforms to PDF/UA-2, except those listed in ISO 32000-2:2020, Table 116, shall be embedded in that file, as described in ISO 32000-2:2020, 9.7.5
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1
+
+ A non-standard CMap %1 is not embedded
+
+ CMapName
+
+
+
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+ A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V"
+
+ A CMap references another non-standard CMap %1
+
+ CMapName
+
+
+
+
+
+
+
+
+ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-2:2020, 9.9
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced solely in text rendering mode 3 is not rendered and is thus exempt from the requirements that impact the visual representation of the glyphs of a font. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs in accordance with ISO 32000-2:2020, 9.6.5, without the use of a non-standard mapping chosen by the conforming processor
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
+
+
+ For every font embedded in a conforming file and referenced for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent for every glyph
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain at least Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1), or Macintosh Roman (1,0 – Platform ID=1, Encoding ID=0) 'cmap' subtable
+ isSymbolic == true || cmap31Present == true || cmap10Present == true
+
+ The embedded font program for a non-symbolic TrueType font does not contain Microsoft Symbol (3,1 – Platform ID=3, Encoding ID=1) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding
+
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the dictionary which is the value of the Encoding key in the Font dictionary. In addition, no non-symbolic TrueType font shall define a Differences array unless all of the glyph names in the Differences array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' table
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+ The 'cmap' subtable in the embedded font program shall either contain the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=1) encoding
+ isSymbolic == false || cmap30Present == true || cmap10Present == true
+
+ The embedded font program for a symbolic TrueType font does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding
+
+
+
+
+
+
+ The Font dictionary of all fonts shall define the map of all used character codes to Unicode values, either via a ToUnicode entry, or other mechanisms as defined in ISO 14289-2, 8.4.5.8
+ toUnicode != null
+
+ The glyph can not be mapped to Unicode
+
+
+
+
+
+
+
+
+
+ If a ToUnicode CMap is present, the Unicode values it specifies shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE
+ toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1)
+
+ The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard
+
+
+
+
+
+
+ A file in conformance with PDF/UA-2 shall not contain a reference to the .notdef glyph from any of the text showing operators, regardless of text rendering mode, in any content stream
+ name != ".notdef"
+
+ The document contains a reference to the .notdef glyph
+
+
+
+
+
+
+
+
+ Text strings intended to be human readable shall not use the Unicode PUA
+ containsPUA == false
+
+ Text string intended to be human readable uses Unicode PUA
+
+
+
+
+
+
+
+
+ All optional content configuration dictionaries in the document, including the default optional content configuration dictionary, shall contain a Name entry (see ISO 32000-2:2020, Table 96) whose value is a non-empty text string when: a) a document contains a Configs entry in the OCProperties entry of the catalog dictionary (see ISO 32000-2:2020, Table 29), and b) the Configs entry contains at least one optional content configuration dictionary
+ gContainsConfigs == false || (Name != null && Name.length() > 0)
+
+ Missing or empty Name entry of the optional content configuration dictionary
+
+
+
+
+
+
+
+
+
+ The AS key shall not appear in any optional content configuration dictionary
+ AS == null
+
+ AS key is present in the optional content configuration dictionary
+
+
+
+
+
+
+ All destinations whose target lies within the current document shall be structure destinations
+ isStructDestination == true
+
+ Destination in Outline item, OpenAction or Link annotation is not a structure destination
+
+
+
+
+
+
+
+
+
+ All destinations whose target lies within the current document shall be structure destinations
+ containsStructDestination == true
+
+ Destination in GoTo action is not a structure destination
+
+
+
+
+
+
+
+
+
+ Annotations shall be artifacts, if the Invisible flag is set in accordance with ISO 32000-2:2020, Table 167
+ structParentType == null || isArtifact == true || (F & 1) == 0
+
+ An invisible annotation is included in logical structure with tag %1 (standard type = %2, Invisible = %3)
+
+ structParentType
+ structParentStandardType
+ F != null ? (F & 1) : null
+
+
+
+
+
+
+
+
+ Annotations shall be artifacts if the NoView flag is set and the ToggleNoView flag is not set in accordance with ISO 32000-2:2020, Table 167
+ structParentType == null || isArtifact == true || ((F & 32) == 0 || (F & 256) == 1)
+
+ A no-view annotation is included in logical structure with tag %1 (standard type = %2, NoView = %3, ToggleNoView = %4)
+
+ structParentType
+ structParentStandardType
+ F != null ? (F & 32) >> 5 : null
+ F != null ? (F & 256) >> 8 : null
+
+
+
+
+
+
+
+
+ Markup annotations shall be enclosed within Annot structure elements
+ structParentStandardType == 'Annot'
+
+ A Markup annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Annot
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+ When both RC and Contents entries are present for markup annotation, they shall be textually equivalent
+ containsRC == false || Contents == null || RC == Contents
+
+ A Markup annotation contains Contents and RC entries with non-equivalent textual values (RC = %1, Contents = %2)
+
+ RC
+ Contents
+
+
+
+
+
+
+ If the Name entry is insufficient to describe the intent of the stamp annotation, a Contents entry describing the author’s intent shall be provided
+ Name != null || Contents != null
+
+ Rubber stamp annotation contains neither Name nor Contents entry
+
+
+
+
+
+
+
+
+ A Contents entry describing the author’s intent shall be provided for Ink annotation
+ Contents != null
+
+ Ink annotation does not contain Contents entry
+
+
+
+
+
+
+ Popup annotations shall not be present in the structure tree
+ structParentType == null
+
+ A Popup annotation is included in logical structure with tag %1 (standard type = %2)
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
+
+ When a file attachment annotation references a file specification dictionary, the file specification dictionary shall include an AFRelationship entry
+ containsFS == false || AFRelationship != null
+
+ The file specification dictionary referenced by a file attachment annotation does not include AFRelationship entry
+
+
+
+
+
+
+
+
+
+ Sound annotation cannot be used when conforming to PDF/UA-2
+ false
+
+ An annotation of subtype Sound exists
+
+
+
+
+
+
+ Movie annotation cannot be used when conforming to PDF/UA-2
+ false
+
+ An annotation of subtype Movie exists
+
+
+
+
+
+
+ Screen annotations shall include a Contents entry
+ Contents != null
+
+ Screen annotation does not contain Contents entry
+
+
+
+
+
+
+ A widget annotation of zero height and width shall be an artifact
+ width != 0 || height != 0 || structParentType == null || isArtifact == true
+
+ A Widget annotation of zero height and width is not marked as an Artifact (structure tag = %1, standard type = %2)
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
+
+ A printer's mark annotation shall be an artifact
+ structParentType == null || isArtifact == true
+
+ A PrinterMark annotation is included in logical structure with tag %1 (standard type = %2)
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
+
+ Trap network annotations shall not be used in files conforming to PDF/UA-2
+ false
+
+ An annotation of subtype TrapNet exists
+
+
+
+
+
+
+ When used as real content, Watermark annotations shall be enclosed within Annot structure elements
+ structParentType == null || isArtifact == true || structParentStandardType == 'Annot'
+
+ A Watermark annotation is nested within %1 tag (standard type = %2) instead of Annot
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+ 3D annotation shall include alternate description in respective Contents entry
+ Contents != null
+
+ 3D annotation does not contain Contents entry
+
+
+
+
+
+
+
+
+ RichMedia annotation shall include alternate description in respective Contents entry
+ Contents != null
+
+ RichMedia annotation does not contain Contents entry
+
+
+
+
+
+
+
+
+ Every page that includes an annotation shall contain a Tabs entry in its page dictionary in accordance with ISO 32000-2:2020, Table 31, and its value shall be A, W or S
+ annots_size == 0 || Tabs == 'A' || Tabs == 'W' || Tabs == 'S'
+
+ A page with annotation(s) contains Tabs key with value %1 instead of A, W or S
+
+ Tabs
+
+
+
+
+
+
+ Where an annotation has a Contents entry and the directly enclosing structure element has an Alt entry, the values of Alt and Contents shall be identical
+ Contents == null || Alt == null || Contents == Alt
+
+ Both Contents and Alt entries are present for the annotation, but they are not identical (Contents = %1, Alt = %2)
+
+ Contents
+ Alt
+
+
+
+
+
+
+ Each widget annotation shall be enclosed by a Form structure element unless the widget annotation is an artifact
+ structParentType == null || structParentStandardType == 'Form' || isArtifact == true
+
+ A Widget annotation is nested within %1 tag (standard type = %2) instead of Form or Artifact
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+ A Form structure element shall contain at most one widget annotation
+ widgetAnnotsCount <= 1
+
+ A Form structure element contains %1 widget annotations
+
+ widgetAnnotsCount
+
+
+
+
+
+
+ XFA forms shall not be present
+ containsXFA == false
+
+ XFA form is present
+
+
+
+
+
+
+
+
+ If a label for a widget annotation is not present, a Contents entry shall be provided to supply description and context for the widget
+ containsLbl == true || Contents != null
+
+ Widget annotation contains neither label nor Contents entry
+
+
+
+
+
+
+ If an additional action (AA) entry is present in a widget annotation dictionary, the respective widget's Contents entry shall be present
+ containsAA == false || Contents != null
+
+ Widget annotation dictionary contains an AA entry, but does not contain the Contents entry
+
+
+
+
+
+
+
+
+ For text fields, when an RV entry is present a V entry shall also be present, and they shall be textually equivalent
+ containsRV == false || (V != null && RV == V)
+
+ Text field contains RV entry, but no V entry or they are not textually equivalent (RV = %1, V = %2)
+
+ RV
+ V
+
+
+
+
+
+
+
+
+
+ If a portion of the appearance of a signature is represented by a graphic, alternative text shall be provided for that graphic
+ isSignature == false || Alt != null
+
+ A portion of the appearance of a signature is represented by a graphic, but alternative text is not provided for that graphic
+
+
+
+
+
+
+ The Metadata stream as specified in ISO 32000-2:2020, 14.3 in the document catalog dictionary shall contain a dc:title entry
+ dc_title != null
+
+ Metadata stream does not contain dc:title
+
+
+
+
+
+
+
+
+ The ViewerPreferences dictionary of the document catalog dictionary shall be present and shall contain at least the DisplayDocTitle key with a value of true, as described in ISO 32000-2:2020, Table 147
+ DisplayDocTitle == true
+
+ ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, DisplayDocTitle = %2)
+
+ ViewerPreferences
+ DisplayDocTitle
+
+
+
+
+
+
+
+
+ The Desc entry shall be present on all file specification dictionaries present in the EmbeddedFiles name tree of a conforming document
+ containsDesc == true || presentInEmbeddedFiles == false
+
+ The file specification dictionary for an embedded file does not contain Desc key
+
+
+
+
+
+
+
+ false
+ containsConfigs
+
+
+
diff --git a/PDF_UA/WCAG-2-2-Complete.xml b/PDF_UA/WCAG-2-2-Complete.xml
new file mode 100644
index 00000000..2b8bd4af
--- /dev/null
+++ b/PDF_UA/WCAG-2-2-Complete.xml
@@ -0,0 +1,2081 @@
+
+
+
+ WCAG-2.2-Complete validation profile
+ Validation rules against WCAG 2.2 and ISO 14289-1:2014
+
+
+
+
+
+ Content marked as Artifact should not present inside tagged content
+ tag != 'Artifact' || (isTaggedContent == false || isArtifact == true)
+
+ Content marked as Artifact is present inside tagged content (parent struct element %1)
+
+ parentStructureElementObjectKey
+
+
+
+
+
+
+ Tagged content should not present inside content marked as Artifact
+ (isTaggedContent == false || isArtifact == true) || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0
+
+ Tagged content (parent struct element %1) is present inside content marked as Artifact
+
+ parentStructureElementObjectKey
+
+
+
+
+
+
+ Content shall be marked as Artifact or tagged as real content
+ isTaggedContent == true || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0
+
+ Content is neither marked as Artifact nor tagged as real content
+
+
+
+
+
+
+ Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321)
+ Suspects != true
+
+ Suspects entry has a value of true
+
+
+
+
+
+
+
+
+ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type
+ isNotMappedToStandardType == false
+
+ Non-standard structure type %1 is not mapped to a standard type
+
+ valueS
+
+
+
+
+
+
+
+
+ A circular mapping shall not exist
+ circularMappingExist != true
+
+ A circular mapping exists for %1 structure type
+
+ valueS
+
+
+
+
+
+
+ Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped
+ remappedStandardType == null
+
+ Standard type %1 is remapped
+
+ remappedStandardType
+
+
+
+
+
+
+
+
+ The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2
+ metadata_size == 1
+
+ The document catalog dictionary doesn't contain metadata key
+
+
+
+
+
+
+
+
+ The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which clearly identifies the document
+ dc_title != null && dc_title != ''
+
+ Metadata stream does not contain dc:title
+
+
+
+
+
+
+ The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true
+ DisplayDocTitle == true
+
+ ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, DisplayDocTitle = %2)
+
+ ViewerPreferences
+ DisplayDocTitle
+
+
+
+
+
+
+ The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document catalog dictionary, as described in ISO 32000-1:2008, 14.7
+ StructTreeRoot_size == 1
+
+ StructTreeRoot entry is not present in the document catalog
+
+
+
+
+
+
+
+
+ A structure element dictionary shall contain the P (parent) entry according to ISO 32000-1:2008, 14.7.2, Table 355
+ containsParent == true
+
+ A structure element dictionary does not contain the P (parent) entry
+
+
+
+
+
+
+
+
+ Natural language in the Outline entries shall be determined
+ gSizeCatalogLang != 0
+
+ Natural language in the Outline entries cannot be determined
+
+
+
+
+
+
+ Table element may contain only TR, THead, TBody, TFoot and Caption elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == ''
+
+ Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead'
+ && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+ TR element should be contained in Table, THead, TBody or TFoot element
+ /^(Table|THead|TBody|TFoot)$/.test(parentStandardType)
+
+ TR element contained in %1 instead of Table, THead, TBody or TFoot element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+ THead element should be contained in Table element
+ parentStandardType == 'Table'
+
+ THead element contained in %1 instead of Table element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+ TBody element should be contained in Table element
+ parentStandardType == 'Table'
+
+ TBody element contained in %1 instead of Table element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+ TFoot element should be contained in Table element
+ parentStandardType == 'Table'
+
+ TFoot element contained in %1 instead of Table element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+ TH element should be contained in TR element
+ parentStandardType == 'TR'
+
+ TH element contained in %1 instead of TR element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+ TD element should be contained in TR element
+ parentStandardType == 'TR'
+
+ TD element contained in %1 instead of TR element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+ TR element may contain only TH and TD elements
+ /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == ''
+
+ TR element contains %1 element(s) instead of TH or TD
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+ Table element should contain zero or one THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1
+
+ Table element contains more than one THead kid
+
+
+
+ structureID
+
+
+
+
+
+
+
+
+ Table element should contain zero or one TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1
+
+ Table element contains more than one TFoot kid
+
+
+
+ structureID
+
+
+
+
+
+
+
+
+ If Table element contains TFoot kid, Table element should contain one or more TBody kids
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0
+
+ Table element contains TFoot kid, but does not contain TBody kids
+
+
+
+ structureID
+
+
+
+
+
+
+
+
+ If Table element contains THead kid, Table element should contain one or more TBody kids
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0
+
+ Table element contains THead kid, but does not contain TBody kids
+
+
+
+ structureID
+
+
+
+
+
+
+
+
+ A table cell shall not have intersection with other cells
+ hasIntersection != true
+
+ Table cell has intersection with other cells
+
+
+
+
+
+
+
+
+ Table element may contain a Caption element as its first or last kid
+ kidsStandardTypes.indexOf('&Caption&') < 0
+
+ Table element contains Caption as its %1 child instead of first or last one
+
+ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2
+
+ structureID
+
+
+
+
+
+
+
+
+ LI element should be contained in L element
+ parentStandardType == 'L'
+
+ LI element contained in %1 instead of L element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+ LBody element should be contained in LI element
+ parentStandardType == 'LI'
+
+ LBody element contained in %1 instead of LI element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+ L element may contain only L, LI and Caption elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' && elem != 'Caption').length == 0 || kidsStandardTypes == ''
+
+ L element contains %1 element(s) instead of L, LI or Caption
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI'
+ && elem != 'Caption').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+ LI element may contain only Lbl and LBody elements
+ /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == ''
+
+ LI element contains %1 element(s) instead of Lbl or LBody
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+ Natural language for text in ActualText attribute shall be determined
+ ActualText == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in ActualText attribute cannot be determined
+
+
+
+
+
+
+ Natural language for text in Alt attribute shall be determined
+ Alt == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in Alt attribute cannot be determined
+
+
+
+
+
+
+ Natural language for text in E attribute shall be determined
+ E == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in E attribute cannot be determined
+
+
+
+
+
+
+ Natural language in the Contents entry for annotations shall be determined
+ Contents == null || Lang_size != 0 || gSizeCatalogLang != 0
+
+ Natural language in the Contents entry for annotations cannot be determined
+
+
+
+
+
+
+ Natural language in the TU key for form fields shall be determined
+ TU == null || Lang_size != 0 || gSizeCatalogLang != 0
+
+ Natural language in the TU key for form fields cannot be determined
+
+
+
+
+
+
+ TOCI element should be contained in TOC element
+ parentStandardType == 'TOC'
+
+ TOCI element contained in %1 instead of TOC element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+ TOC element may contain only TOC, TOCI and Caption elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' && elem != 'Caption').length == 0 || kidsStandardTypes == ''
+
+ TOC element contains %1 element(s) instead of TOC, TOCI or Caption
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI'
+ && elem != 'Caption').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+ TOC element may contain a Caption element only as its first kid
+ kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0
+
+ TOC element contains Caption as its %1 child instead of first one
+
+ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2
+
+ structureID
+
+
+
+
+
+
+
+
+ If the Lang entry is present in the document's Catalog dictionary or in a structure element dictionary or property list, its value shall be a language identifier as described in ISO 32000-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages
+ /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue)
+
+ Value %1 of the Lang entry is not a Language-Tag
+
+ unicodeValue
+
+
+
+
+
+
+
+
+
+ Natural language for text in ActualText attribute in Span Marked Content shall be determined
+ tag != 'Span' || ActualText == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in ActualText attribute in Span Marked Content cannot be determined
+
+
+
+
+
+
+ Natural language for text in Alt attribute in Span Marked Content shall be determined
+ tag != 'Span' || Alt == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in Alt attribute in Span Marked Content cannot be determined
+
+
+
+
+
+
+ Natural language for text in E attribute in Span Marked Content shall be determined
+ tag != 'Span' || E == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in E attribute in Span Marked Content cannot be determined
+
+
+
+
+
+
+ Natural language for document metadata shall be determined
+ xDefault == false || gSizeCatalogLang != 0
+
+ Natural language for document metadata cannot be determined
+
+
+
+
+
+
+ Natural language for text in page content shall be determined
+ gSizeCatalogLang != 0 || Lang != null
+
+ Natural language for text in page content cannot be determined
+
+
+
+
+
+
+ THead element may contain only TR elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == ''
+
+ THead element contains %1 element(s) instead of TR
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+ TBody element may contain only TR elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == ''
+
+ TBody element contains %1 element(s) instead of TR
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+ TFoot element may contain only TR elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == ''
+
+ TFoot element contains %1 element(s) instead of TR
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+ Table element may contain only one Caption element
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2
+
+ Table element contains %1 Caption elements instead of one
+
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length
+
+ structureID
+
+
+
+
+
+
+
+
+ L element may contain a Caption element only as its first kid
+ kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0
+
+ L element contains Caption as its %1 child instead of first one
+
+ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2
+
+ structureID
+
+
+
+
+
+
+
+
+ Table columns shall have the same number of rows (taking into account row spans)
+ numberOfColumnWithWrongRowSpan == null
+
+ Table columns 1 and %1 span different number of rows
+
+ numberOfColumnWithWrongRowSpan + 1
+
+
+
+
+
+
+
+
+ Table rows shall have the same number of columns (taking into account column spans)
+ numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null
+
+ Table rows 1 and %1 span different number of columns
+
+ numberOfRowWithWrongColumnSpan + 1
+
+
+
+
+
+
+
+
+ Table rows shall have the same number of columns (taking into account column spans)
+ numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null
+
+ Table rows 1 and %1 span different number of columns (%2 and %3 respectively)
+
+ numberOfRowWithWrongColumnSpan + 1
+ columnSpan
+ wrongColumnSpan
+
+
+
+
+
+
+
+
+ Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323
+ (Alt != null && Alt != '') || ActualText != null
+
+ Figure structure element neither has an alternate description nor a replacement text
+
+
+
+
+
+
+
+
+ Each node in the tag tree shall contain at most one child H tag
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ A node contains more than one H tag
+
+
+
+
+
+
+ All documents shall be either strongly or weakly structured, but not both
+ usesHn == false
+
+ Document uses both H and H# tags
+
+
+
+
+
+
+ All documents shall be either strongly or weakly structured, but not both
+ usesH == false
+
+ Document uses both H and H# tags
+
+
+
+
+
+
+ If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute
+ hasConnectedHeader != false || unknownHeaders != ''
+
+ TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically
+
+
+
+
+
+
+
+
+ If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute
+ hasConnectedHeader != false || unknownHeaders == ''
+
+ TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically
+
+ unknownHeaders
+
+
+
+
+
+
+
+
+ All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, 14.8.4.5 and shall have Alt or ActualText attributes
+ (Alt != null && Alt != '') || ActualText != null
+
+ Formula structure element neither has an alternate description nor a replacement text
+
+
+
+
+
+
+
+
+ Note tag shall have ID entry
+ noteID != null && noteID != ''
+
+ ID key of the Note tag is not present
+
+
+
+
+
+
+ Each Note tag shall have unique ID key
+ hasDuplicateNoteID == false
+
+ ID key %1 of the Note tag is non-unique
+
+ noteID
+
+
+
+
+
+
+ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key
+ Name != null && Name.length() > 0
+
+ Missing or empty Name entry of the optional content configuration dictionary
+
+
+
+
+
+
+ The AS key shall not appear in any optional content configuration dictionary
+ AS == null
+
+ AS key is present in the optional content configuration dictionary
+
+
+
+
+
+
+ The file specification dictionary for an embedded file shall contain the non-empty F and UF keys
+ containsEF == false || (F != null && F != '' && UF != null && UF != '')
+
+ The file specification dictionary for an embedded file does not contain either F or UF key or at least one of the keys is empty (F = %1, UF = %2)
+
+ F
+ UF
+
+
+
+
+
+
+ Dynamic XFA forms shall not be used
+ dynamicRender != 'required'
+
+ Dynamic XFA forms is present
+
+
+
+
+
+
+ An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, 7.6.3.2, Table 21). The 10th bit position of the P key shall be true
+ P != null && (P & 512) == 512
+
+ The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false (P = %1, 10th bit = %2)
+
+ P
+ P != null ? (P & 512) >> 9 : null
+
+
+
+
+
+
+
+
+ An annotation, excluding annotations of subtype Widget, PrinterMark or Link, shall be nested within an Annot tag
+ Subtype == 'Widget' || Subtype == 'PrinterMark' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot'
+
+ %1 annotation is an Artifact or is nested within %2 tag (standard type = %3) instead of Annot
+
+ Subtype
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+ An annotation (except Widget annotations or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element
+ Subtype == 'Widget' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '')
+
+ %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box has neither Contents key nor an Alt entry in the enclosing structure element
+
+ Subtype
+
+
+
+
+
+
+ A form field shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements)
+ isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '')
+
+ A form field neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt entry in the enclosing structure element)
+
+
+
+
+
+
+ Annotations of subtype TrapNet shall not be permitted
+ isOutsideCropBox == true || (F & 2) == 2
+
+ An annotation of subtype TrapNet exists
+
+
+
+
+
+
+ Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S
+ annots_size == 0 || Tabs == 'S'
+
+ A page with annotation(s) contains Tabs key with value %1 instead of S
+
+ Tabs
+
+
+
+
+
+
+ A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340
+ structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2
+
+ A Widget annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Form
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
+
+ If the Form element omits a Role attribute (Table 348), it shall have only one child: an object reference (14.7.4.3) identifying the widget annotation per ISO 32000-1:2008, 14.8.4.5, Table 340
+ roleAttribute != null || hasOneInteractiveChild == true
+
+ The Form element omits a Role attribute and doesn't have only one child identifying the widget annotation
+
+
+
+
+
+
+
+
+ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element
+ structParentStandardType == 'Link' || structParentStandardType == 'Reference' || isOutsideCropBox == true || (F & 2) == 2
+
+ A Link annotation is artifact or is nested within %1 tag (standard type = %2) instead of Link or Reference
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
+
+ In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required
+ CT != null
+
+ CT key is missing from the media clip data dictionary
+
+
+
+
+
+
+
+
+ In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required
+ hasCorrectAlt == true
+
+ Alt key (value %1) is missing from the media clip data dictionary or has incorrect value
+
+ Alt
+
+
+
+
+
+
+
+
+ PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3
+ (structParentType == null || isArtifact == true) || isOutsideCropBox == true || (F & 2) == 2
+
+ A PrinterMark annotation is included in logical structure
+
+
+
+
+
+
+
+
+ A conforming file shall not contain any reference XObjects
+ containsRef == false
+
+ The document contains a reference XObject (Ref key in the form XObject dictionary)
+
+
+
+
+
+
+ The content of Form XObjects shall be incorporated into structure elements according to ISO 32000-1:2008, 14.7.2
+ isUniqueSemanticParent == true
+
+ Form XObject contains MCIDs and is referenced more than once
+
+
+
+
+
+
+
+
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary shall have the following relationship: - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement)
+
+ CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+ CIDFontSupplement
+ CMapSupplement
+
+
+
+
+
+
+ ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-1:2008, 9.7.4, Table 117
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+ All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1
+
+ A non-standard CMap %1 is not embedded
+
+ CMapName
+
+
+
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V"
+
+ A CMap references another non-standard CMap %1
+
+ CMapName
+
+
+
+
+
+
+
+
+ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced solely in text rendering mode 3 is not rendered and is thus exempt from the requirements that impact the visual representation of the glyphs of a font. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true
+
+ A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program
+
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true
+
+ A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset
+
+
+
+
+
+
+ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out
+ isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0)
+
+ The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries
+
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the dictionary which is the value of the Encoding key in the Font dictionary. In addition, no non-symbolic TrueType font shall define a Differences array unless all of the glyph names in the Differences array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' table
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+ The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding
+ isSymbolic == false || nrCmaps == 1 || cmap30Present == true
+
+ The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0)
+
+ nrCmaps
+
+
+
+
+
+
+ The Font dictionary of all fonts shall define the map of all used character codes to Unicode values, either via a ToUnicode entry, or other mechanisms as defined in ISO 14289-1, 7.21.7
+ toUnicode != null
+
+ The glyph can not be mapped to Unicode
+
+
+
+
+
+
+
+
+ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE
+ toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1)
+
+ The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard
+
+
+
+
+
+
+ A PDF/UA compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators, regardless of text rendering mode, in any content stream
+ name != ".notdef"
+
+ The document contains a reference to the .notdef glyph
+
+
+
+
+
+
+ Text should not contain repeated non space characters
+ isNonSpace == false || numberOfRepeatedCharacters < 5
+
+ Text contains %1 repeated non space characters
+
+ numberOfRepeatedCharacters
+
+
+
+
+
+
+ Text should not contain repeated space characters
+ isNonSpace == true || numberOfRepeatedCharacters < 3
+
+ Text contains %1 repeated space characters
+
+ numberOfRepeatedCharacters
+
+
+
+
+
+
+ Underlined text
+ isUnderlined == false || parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0
+
+ Underlined text is detected
+
+
+
+
+
+
+ If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element
+ hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0
+
+ Text has a different style and not tagged as Span, Em, Strong or other appropriate inline element
+
+
+
+
+
+
+ Pages shall have the same orientation
+ orientation == 'Square' || gMostCommonPageOrientation == orientation
+
+ Page %1 has different orientation
+
+ pageNumber + 1
+
+
+
+
+
+
+ The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1
+ textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0
+
+ contrastRatio = %1
+
+ contrastRatio
+
+
+
+
+
+
+ Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality
+ textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0
+
+ textSize = %1
+
+ textSize
+
+
+
+
+
+
+ Document should not contain illegible font
+ fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && fontName.indexOf('VladimirScript') == -1 && (fontName.indexOf('HarlowSolid') == -1 || isItalic != true)
+
+ Document contains illegible font
+
+
+
+
+
+
+ Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page
+ page != lastPage || hasBBox == true
+
+ "Figure" structure element on a single page with no bounding box
+
+
+
+
+
+
+
+
+ Links shall contain an alternate description via their Contents or Alt keys or in the text value
+ (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || (Alt != null && Alt != '' && altIsLink == false)
+
+ A link annotation does not include an alternate description in the Contents or Alt Keys or in the text value
+
+
+
+
+
+
+
+
+ Table shouldn't have merged cells
+ ColSpan == 1 && RowSpan == 1
+
+ Table has merged cells
+
+
+
+
+
+
+ Table shouldn't have merged cells
+ ColSpan == 1 && RowSpan == 1
+
+ Table has merged cells
+
+
+
+
+
+
+ Table shouldn't have merged cells
+ colSpan == 1 && rowSpan == 1
+
+ Table has merged cells
+
+
+
+ structureID
+
+
+
+
+
+
+ Incorrect use of a paragraph
+ correctSemanticScore >= 0.75 || correctType == null || correctType == 'H'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Incorrect use of a span
+ correctSemanticScore >= 0.75 || correctType == null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Incorrect use of a heading
+ correctSemanticScore >= 0.75 || correctType == null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Incorrect use of a numbered heading
+ correctSemanticScore >= 0.75 || correctType == null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Incorrect table element
+ hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0)
+
+ score = %1, correct type = %2, structure id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ Missing table element
+ hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem == true) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0)
+
+ score = %1, correct type = %2, structure id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ This structure element should be a heading instead of a paragraph
+ correctType != 'H' && correctType != 'Hn'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ This structure element should be a span instead of a paragraph
+ correctType != 'Span'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ This structure element should be a paragraph instead of a span
+ correctType != 'P'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ This structure element should be a heading instead of a span
+ correctType != 'H' && correctType != 'Hn'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ This structure element should be a paragraph instead of a heading
+ correctType != 'P'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ This structure element should be a paragraph instead of a numbered heading
+ correctType != 'P'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Redundant paragraph
+ correctType != null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Redundant span
+ correctType != null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Redundant heading
+ correctType != null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Redundant numbered heading
+ correctType != null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ This structure element should be a caption instead of a paragraph
+ correctType != 'Caption'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ The structure type and attributes of list elements shall be semantically appropriate
+ hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true)
+
+ score = %1, correct type = %2, structure id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ The structure type and attributes of a list shall be semantically appropriate
+ hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ The structure type and attributes of a list item shall be semantically appropriate
+ hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ The structure type and attributes of a list body shall be semantically appropriate
+ hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ A table element is incorrectly tagged as a list element or a list has the wrong numbering
+ hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && standardType != 'Lbl' && standardType != 'LBody')
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ This structure element should be a part or several different paragraphs instead of a paragraph
+ correctType != 'Part' || correctSemanticScore < 0.75
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ The structure type and attributes of a TOCI shall be semantically appropriate
+ correctType != 'TOCI' || standardType == 'TOCI'
+
+ score = %1, correct type = %2, structure id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ TOCI shall contain one or more text lines
+ errorCodes.split(',').filter(elem => elem == 1000).length == 0
+
+ TOCI doesn't have a text
+
+
+
+ structureID
+
+
+
+
+
+
+ TOCI page label shall match the destination page
+ errorCodes.split(',').filter(elem => elem == 1002).length == 0
+
+ TOCI has a wrong page label. Possible page number(s), which page label could be used: %1
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1002)]
+
+ structureID
+
+
+
+
+
+
+ TOCI shall have a right alignment that matches a right alignment of other TOCIs
+ errorCodes.split(',').filter(elem => elem == 1003).length == 0
+
+ TOCI has a bad right alignment
+
+
+
+ structureID
+
+
+
+
+
+
+ This list and neighbor list(s) should be tagged as one list
+ errorCodes.split(',').filter(elem => elem == 1200).length == 0
+
+ This list and neighbor list(s) should be tagged as one list
+
+
+
+ structureID
+
+
+
+
+
+
+ This TOC and neighbor TOC(s) should be tagged as one TOC
+ errorCodes.split(',').filter(elem => elem == 1006).length == 0
+
+ This TOC and neighbor TOC(s) should be tagged as one TOC
+
+
+
+ structureID
+
+
+
+
+
+
+ The number of rows of this table does not match the number of rows of the visual representation of this table
+ errorCodes.split(',').filter(elem => elem == 1104).length == 0
+
+ The number of rows %1 of this table does not match the number of rows %2 of the visual representation of this table
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[0]
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[1]
+ structureID
+
+
+
+
+
+
+ The number of columns of this table does not match the number of columns of the visual representation of this table
+ errorCodes.split(',').filter(elem => elem == 1105).length == 0
+
+ The number of columns %1 of this table does not match the number of columns %2 of the visual representation of this table
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[0]
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[1]
+ structureID
+
+
+
+
+
+
+ The row span of this table cell does not match the row span of the visual representation of this table cell
+ errorCodes.split(',').filter(elem => elem == 1106).length == 0
+
+ The row span %1 of this table cell does not match the row span %2 of the visual representation of this table cell
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[0]
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[1]
+ structureID
+
+
+
+
+
+
+ The column span of this table cell does not match the column span of the visual representation of this table cell
+ errorCodes.split(',').filter(elem => elem == 1107).length == 0
+
+ The column span %1 of this table cell does not match the column span %2 of the visual representation of this table cell
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[0]
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[1]
+ structureID
+
+
+
+
+
+
+ This content should be tagged as a list item
+ false
+
+ This content should be tagged as a list item
+
+
+
+ structureID
+
+
+
+
+
+
+ This cell is below than some cells in the next row
+ errorCodes.split(',').filter(elem => elem == 1100).length == 0
+
+ This cell is below than some cells in the next row
+
+
+
+ structureID
+
+
+
+
+
+
+ This cell is above than some cells in the previous row
+ errorCodes.split(',').filter(elem => elem == 1101).length == 0
+
+ This cell is above than some cells in the previous row
+
+
+
+ structureID
+
+
+
+
+
+
+ This cell is to the right of some cells in the next column
+ errorCodes.split(',').filter(elem => elem == 1102).length == 0
+
+ This cell is to the right of some cells in the next column
+
+
+
+ structureID
+
+
+
+
+
+
+ This cell is to the left of some cells in the previous column
+ errorCodes.split(',').filter(elem => elem == 1103).length == 0
+
+ This cell is to the left of some cells in the previous column
+
+
+
+ structureID
+
+
+
+
+
+
+ This structure element should be a table cell instead of a table header
+ correctType != 'TD'
+
+ score = %1, correct type = %2, id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ TOCI text should be presented in the document
+ errorCodes.split(',').filter(elem => elem == 1007).length == 0
+
+ TOCI text is not found in the document
+
+
+
+ structureID
+
+
+
+
+
+
+ TOCI text should be presented on a destination page
+ errorCodes.split(',').filter(elem => elem == 1008).length == 0
+
+ TOCI text is not found on a destination page %wrongDestinationPage%. Possible destination page number(s): %possiblePageNumbers%
+
+ errorArguments.split(';;')[errorCodes.split(',')
+ .findIndex(elem => elem == 1008)].split(';')[0]
+ errorArguments.split(';;')[errorCodes.split(',')
+ .findIndex(elem => elem == 1008)].split(';')[1]
+ structureID
+
+
+
+
+
+
+ TOCI should have a destination
+ errorCodes.split(',').filter(elem => elem == 1009).length == 0
+
+ TOCI doesn't have a destination. Possible destination page number(s): %1
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1009)]
+
+ structureID
+
+
+
+
+
+
+ TOCI should have a correct page label
+ errorCodes.split(',').filter(elem => elem == 1010).length == 0
+
+ TOCI has a wrong page label. Possible page number(s), which page label could be used: %1
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1010)]
+
+ structureID
+
+
+
+
+
+
+ TOCI should have a correct numbering
+ errorCodes.split(',').filter(elem => elem == 1011).length == 0
+
+ TOCI has a wrong numbering. The heading number cannot start with %wrongNumbering%
+
+ errorArguments.split(';;')[errorCodes.split(',')
+ .findIndex(elem => elem == 1011)].split(';')[0]
+ errorArguments.split(';;')[errorCodes.split(',')
+ .findIndex(elem => elem == 1011)].split(';')[1]
+ structureID
+
+
+
+
+
+
+ List should contain list items
+ errorCodes.split(',').filter(elem => elem == 1201).length == 0
+
+ List contains only one child - list
+
+
+
+
+
+
+ The structure type and attributes of a list item shall be semantically appropriate
+ errorCodes.split(',').filter(elem => elem == 1202).length == 0
+
+ This list item should be tagged as several different list items
+
+
+
+
+
+
+ This structure element should be a note instead of a span
+ correctType != 'Note'
+
+ This structure element should be a note instead of a span
+
+
+
+
+
+
+ This structure element should be a note instead of a paragraph
+ correctType != 'Note'
+
+ This structure element should be a note instead of a paragraph
+
+
+
+
+
+
+ The structure type and attributes of a heading shall be semantically appropriate
+ errorCodes.split(',').filter(elem => elem == 1300).length == 0
+
+ This node is the single child with content. One of its ancestor nodes should be tagged as heading instead of this one
+
+
+
+
+
+
+
+ null
+ mostCommonOrientation
+
+
+ 0
+ Lang_size
+
+
+ false
+ true
+
+
+ false
+ true
+
+
+
diff --git a/PDF_UA/WCAG-2-2-Dev.xml b/PDF_UA/WCAG-2-2-Dev.xml
new file mode 100644
index 00000000..38ca3dd8
--- /dev/null
+++ b/PDF_UA/WCAG-2-2-Dev.xml
@@ -0,0 +1,321 @@
+
+
+
+ WCAG 2.2 development validation profile
+ Extra rules for WCAG 2.2 validation in addition to PDF/UA-1
+
+
+
+
+
+ If text has a different background color, it shall be tagged as Span
+ hasSpecialBackground == false
+
+ Text has a different background color and not tagged as Span
+
+
+
+
+
+
+ The structure type and attributes of a paragraph shall be semantically appropriate
+ correctType == 'P' && correctSemanticScore >= 0.75
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ The structure type and attributes of a span shall be semantically appropriate
+ correctType == 'Span' && correctSemanticScore >= 0.75
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ The structure type and attributes of a table shall be semantically appropriate
+ (correctType == 'Table' && correctSemanticScore >= 0.75)
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ The structure type and attributes of a heading shall be semantically appropriate
+ correctType == 'H' && correctSemanticScore >= 0.75
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ The structure type and attributes of a numbered heading shall be semantically appropriate
+ correctType == 'Hn' && correctSemanticScore >= 0.75
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ The structure type and attributes of a table row shall be semantically appropriate
+ (correctType == 'TR' && correctSemanticScore >= 0.75)
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ The structure type and attributes of a table header cell shall be semantically appropriate
+ (correctType == 'TH' && correctSemanticScore >= 0.75)
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ The structure type and attributes of a table cell shall be semantically appropriate
+ (correctType == 'TD' && correctSemanticScore >= 0.75)
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ The structure type and attributes of table elements shall be semantically appropriate
+ (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' &&
+ correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' &&
+ correctType != 'TFoot')
+
+ score = %1, correct type = %2, structure id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ The structure type and attributes of a caption shall be semantically appropriate
+ correctType == 'Caption' && correctSemanticScore >= 0.75
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ The structure type and attributes of a caption shall be semantically appropriate
+ standardType == 'Caption' || correctType != 'Caption'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ The structure type and attributes of list elements shall be semantically appropriate
+ (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'L' &&
+ correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody')
+
+ score = %1, correct type = %2, structure id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ The structure type and attributes of a list shall be semantically appropriate
+ (correctType == 'L' && correctSemanticScore >= 0.75)
+
+ score = %1, correct type = %2, id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ The structure type and attributes of a list item shall be semantically appropriate
+ (correctType == 'LI' && correctSemanticScore >= 0.75)
+
+ score = %1, correct type = %2, id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ The structure type and attributes of a list label shall be semantically appropriate
+ (correctType == 'Lbl' && correctSemanticScore >= 0.75)
+
+ score = %1, correct type = %2, id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ The structure type and attributes of a list body shall be semantically appropriate
+ (correctType == 'LBody' && correctSemanticScore >= 0.75)
+
+ score = %1, correct type = %2, id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ A table element is incorrectly tagged as a list element or a list has the wrong numbering
+ (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' &&
+ correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' &&
+ correctType != 'Table') || (standardType != 'L' && standardType != 'LI' &&
+ standardType != 'Lbl' && standardType != 'LBody')
+
+ score = %1, correct type = %2, id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ List item does not contain a label
+ correctType != 'LI'
+
+ score = %1, correct type = %2, id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ The structure type and attributes of table headers shall be semantically appropriate
+ (correctType == 'THead' && correctSemanticScore >= 0.75)
+
+ score = %1, correct type = %2, id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ The structure type and attributes of a table body shall be semantically appropriate
+ (correctType == 'TBody' && correctSemanticScore >= 0.75)
+
+ score = %1, correct type = %2, id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ The structure type and attributes of a table footer shall be semantically appropriate
+ (correctType == 'TFoot' && correctSemanticScore >= 0.75)
+
+ score = %1, correct type = %2, id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ line art
+ false
+
+ line art
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG-2-2-Machine.xml b/PDF_UA/WCAG-2-2-Machine.xml
new file mode 100644
index 00000000..4759b281
--- /dev/null
+++ b/PDF_UA/WCAG-2-2-Machine.xml
@@ -0,0 +1,1453 @@
+
+
+
+ WCAG 2.2 machine validation profile
+ Machine rules for WCAG 2.2 validation
+
+
+
+
+
+ Content marked as Artifact should not present inside tagged content
+ tag != 'Artifact' || (isTaggedContent == false || isArtifact == true)
+
+ Content marked as Artifact is present inside tagged content (parent struct element %1)
+
+ parentStructureElementObjectKey
+
+
+
+
+
+
+ Tagged content should not present inside content marked as Artifact
+ (isTaggedContent == false || isArtifact == true) || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0
+
+ Tagged content (parent struct element %1) is present inside content marked as Artifact
+
+ parentStructureElementObjectKey
+
+
+
+
+
+
+ Content shall be marked as Artifact or tagged as real content
+ isTaggedContent == true || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0
+
+ Content is neither marked as Artifact nor tagged as real content
+
+
+
+
+
+
+ Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321)
+ Suspects != true
+
+ Suspects entry has a value of true
+
+
+
+
+
+
+
+
+ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type
+ isNotMappedToStandardType == false
+
+ Non-standard structure type %1 is not mapped to a standard type
+
+ valueS
+
+
+
+
+
+
+
+
+ A circular mapping shall not exist
+ circularMappingExist != true
+
+ A circular mapping exists for %1 structure type
+
+ valueS
+
+
+
+
+
+
+ Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped
+ remappedStandardType == null
+
+ Standard type %1 is remapped
+
+ remappedStandardType
+
+
+
+
+
+
+
+
+ The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2
+ metadata_size == 1
+
+ The document catalog dictionary doesn't contain metadata key
+
+
+
+
+
+
+
+
+ The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which clearly identifies the document
+ dc_title != null && dc_title != ''
+
+ Metadata stream does not contain dc:title
+
+
+
+
+
+
+ The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true
+ DisplayDocTitle == true
+
+ ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, DisplayDocTitle = %2)
+
+ ViewerPreferences
+ DisplayDocTitle
+
+
+
+
+
+
+ The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document catalog dictionary, as described in ISO 32000-1:2008, 14.7
+ StructTreeRoot_size == 1
+
+ StructTreeRoot entry is not present in the document catalog
+
+
+
+
+
+
+
+
+ A structure element dictionary shall contain the P (parent) entry according to ISO 32000-1:2008, 14.7.2, Table 355
+ containsParent == true
+
+ A structure element dictionary does not contain the P (parent) entry
+
+
+
+
+
+
+
+
+ Natural language in the Outline entries shall be determined
+ gSizeCatalogLang != 0
+
+ Natural language in the Outline entries cannot be determined
+
+
+
+
+
+
+ Table element may contain only TR, THead, TBody, TFoot and Caption elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == ''
+
+ Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead'
+ && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+ TR element should be contained in Table, THead, TBody or TFoot element
+ /^(Table|THead|TBody|TFoot)$/.test(parentStandardType)
+
+ TR element contained in %1 instead of Table, THead, TBody or TFoot element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+ THead element should be contained in Table element
+ parentStandardType == 'Table'
+
+ THead element contained in %1 instead of Table element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+ TBody element should be contained in Table element
+ parentStandardType == 'Table'
+
+ TBody element contained in %1 instead of Table element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+ TFoot element should be contained in Table element
+ parentStandardType == 'Table'
+
+ TFoot element contained in %1 instead of Table element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+ TH element should be contained in TR element
+ parentStandardType == 'TR'
+
+ TH element contained in %1 instead of TR element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+ TD element should be contained in TR element
+ parentStandardType == 'TR'
+
+ TD element contained in %1 instead of TR element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+ TR element may contain only TH and TD elements
+ /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == ''
+
+ TR element contains %1 element(s) instead of TH or TD
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+ Table element should contain zero or one THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1
+
+ Table element contains more than one THead kid
+
+
+
+ structureID
+
+
+
+
+
+
+
+
+ Table element should contain zero or one TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1
+
+ Table element contains more than one TFoot kid
+
+
+
+ structureID
+
+
+
+
+
+
+
+
+ If Table element contains TFoot kid, Table element should contain one or more TBody kids
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0
+
+ Table element contains TFoot kid, but does not contain TBody kids
+
+
+
+ structureID
+
+
+
+
+
+
+
+
+ If Table element contains THead kid, Table element should contain one or more TBody kids
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0
+
+ Table element contains THead kid, but does not contain TBody kids
+
+
+
+ structureID
+
+
+
+
+
+
+
+
+ A table cell shall not have intersection with other cells
+ hasIntersection != true
+
+ Table cell has intersection with other cells
+
+
+
+
+
+
+
+
+ Table element may contain a Caption element as its first or last kid
+ kidsStandardTypes.indexOf('&Caption&') < 0
+
+ Table element contains Caption as its %1 child instead of first or last one
+
+ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2
+
+ structureID
+
+
+
+
+
+
+
+
+ LI element should be contained in L element
+ parentStandardType == 'L'
+
+ LI element contained in %1 instead of L element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+ LBody element should be contained in LI element
+ parentStandardType == 'LI'
+
+ LBody element contained in %1 instead of LI element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+ L element may contain only L, LI and Caption elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' && elem != 'Caption').length == 0 || kidsStandardTypes == ''
+
+ L element contains %1 element(s) instead of L, LI or Caption
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI'
+ && elem != 'Caption').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+ LI element may contain only Lbl and LBody elements
+ /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == ''
+
+ LI element contains %1 element(s) instead of Lbl or LBody
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+ Natural language for text in ActualText attribute shall be determined
+ ActualText == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in ActualText attribute cannot be determined
+
+
+
+
+
+
+ Natural language for text in Alt attribute shall be determined
+ Alt == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in Alt attribute cannot be determined
+
+
+
+
+
+
+ Natural language for text in E attribute shall be determined
+ E == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in E attribute cannot be determined
+
+
+
+
+
+
+ Natural language in the Contents entry for annotations shall be determined
+ Contents == null || Lang_size != 0 || gSizeCatalogLang != 0
+
+ Natural language in the Contents entry for annotations cannot be determined
+
+
+
+
+
+
+ Natural language in the TU key for form fields shall be determined
+ TU == null || Lang_size != 0 || gSizeCatalogLang != 0
+
+ Natural language in the TU key for form fields cannot be determined
+
+
+
+
+
+
+ TOCI element should be contained in TOC element
+ parentStandardType == 'TOC'
+
+ TOCI element contained in %1 instead of TOC element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+ TOC element may contain only TOC, TOCI and Caption elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' && elem != 'Caption').length == 0 || kidsStandardTypes == ''
+
+ TOC element contains %1 element(s) instead of TOC, TOCI or Caption
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI'
+ && elem != 'Caption').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+ TOC element may contain a Caption element only as its first kid
+ kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0
+
+ TOC element contains Caption as its %1 child instead of first one
+
+ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2
+
+ structureID
+
+
+
+
+
+
+
+
+ If the Lang entry is present in the document's Catalog dictionary or in a structure element dictionary or property list, its value shall be a language identifier as described in ISO 32000-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages
+ /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue)
+
+ Value %1 of the Lang entry is not a Language-Tag
+
+ unicodeValue
+
+
+
+
+
+
+
+
+
+ Natural language for text in ActualText attribute in Span Marked Content shall be determined
+ tag != 'Span' || ActualText == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in ActualText attribute in Span Marked Content cannot be determined
+
+
+
+
+
+
+ Natural language for text in Alt attribute in Span Marked Content shall be determined
+ tag != 'Span' || Alt == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in Alt attribute in Span Marked Content cannot be determined
+
+
+
+
+
+
+ Natural language for text in E attribute in Span Marked Content shall be determined
+ tag != 'Span' || E == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0
+
+ Natural language for text in E attribute in Span Marked Content cannot be determined
+
+
+
+
+
+
+ Natural language for document metadata shall be determined
+ xDefault == false || gSizeCatalogLang != 0
+
+ Natural language for document metadata cannot be determined
+
+
+
+
+
+
+ Natural language for text in page content shall be determined
+ gSizeCatalogLang != 0 || Lang != null
+
+ Natural language for text in page content cannot be determined
+
+
+
+
+
+
+ THead element may contain only TR elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == ''
+
+ THead element contains %1 element(s) instead of TR
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+ TBody element may contain only TR elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == ''
+
+ TBody element contains %1 element(s) instead of TR
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+ TFoot element may contain only TR elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == ''
+
+ TFoot element contains %1 element(s) instead of TR
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+ Table element may contain only one Caption element
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2
+
+ Table element contains %1 Caption elements instead of one
+
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length
+
+ structureID
+
+
+
+
+
+
+
+
+ L element may contain a Caption element only as its first kid
+ kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0
+
+ L element contains Caption as its %1 child instead of first one
+
+ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2
+
+ structureID
+
+
+
+
+
+
+
+
+ Table columns shall have the same number of rows (taking into account row spans)
+ numberOfColumnWithWrongRowSpan == null
+
+ Table columns 1 and %1 span different number of rows
+
+ numberOfColumnWithWrongRowSpan + 1
+
+
+
+
+
+
+
+
+ Table rows shall have the same number of columns (taking into account column spans)
+ numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null
+
+ Table rows 1 and %1 span different number of columns
+
+ numberOfRowWithWrongColumnSpan + 1
+
+
+
+
+
+
+
+
+ Table rows shall have the same number of columns (taking into account column spans)
+ numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null
+
+ Table rows 1 and %1 span different number of columns (%2 and %3 respectively)
+
+ numberOfRowWithWrongColumnSpan + 1
+ columnSpan
+ wrongColumnSpan
+
+
+
+
+
+
+
+
+ Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323
+ (Alt != null && Alt != '') || ActualText != null
+
+ Figure structure element neither has an alternate description nor a replacement text
+
+
+
+
+
+
+
+
+ Each node in the tag tree shall contain at most one child H tag
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ A node contains more than one H tag
+
+
+
+
+
+
+ All documents shall be either strongly or weakly structured, but not both
+ usesHn == false
+
+ Document uses both H and H# tags
+
+
+
+
+
+
+ All documents shall be either strongly or weakly structured, but not both
+ usesH == false
+
+ Document uses both H and H# tags
+
+
+
+
+
+
+ If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute
+ hasConnectedHeader != false || unknownHeaders != ''
+
+ TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically
+
+
+
+
+
+
+
+
+ If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute
+ hasConnectedHeader != false || unknownHeaders == ''
+
+ TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically
+
+ unknownHeaders
+
+
+
+
+
+
+
+
+ All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, 14.8.4.5 and shall have Alt or ActualText attributes
+ (Alt != null && Alt != '') || ActualText != null
+
+ Formula structure element neither has an alternate description nor a replacement text
+
+
+
+
+
+
+
+
+ Note tag shall have ID entry
+ noteID != null && noteID != ''
+
+ ID key of the Note tag is not present
+
+
+
+
+
+
+ Each Note tag shall have unique ID key
+ hasDuplicateNoteID == false
+
+ ID key %1 of the Note tag is non-unique
+
+ noteID
+
+
+
+
+
+
+ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key
+ Name != null && Name.length() > 0
+
+ Missing or empty Name entry of the optional content configuration dictionary
+
+
+
+
+
+
+ The AS key shall not appear in any optional content configuration dictionary
+ AS == null
+
+ AS key is present in the optional content configuration dictionary
+
+
+
+
+
+
+ The file specification dictionary for an embedded file shall contain the non-empty F and UF keys
+ containsEF == false || (F != null && F != '' && UF != null && UF != '')
+
+ The file specification dictionary for an embedded file does not contain either F or UF key or at least one of the keys is empty (F = %1, UF = %2)
+
+ F
+ UF
+
+
+
+
+
+
+ Dynamic XFA forms shall not be used
+ dynamicRender != 'required'
+
+ Dynamic XFA forms is present
+
+
+
+
+
+
+ An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, 7.6.3.2, Table 21). The 10th bit position of the P key shall be true
+ P != null && (P & 512) == 512
+
+ The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false (P = %1, 10th bit = %2)
+
+ P
+ P != null ? (P & 512) >> 9 : null
+
+
+
+
+
+
+
+
+ An annotation, excluding annotations of subtype Widget, PrinterMark or Link, shall be nested within an Annot tag
+ Subtype == 'Widget' || Subtype == 'PrinterMark' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot'
+
+ %1 annotation is an Artifact or is nested within %2 tag (standard type = %3) instead of Annot
+
+ Subtype
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+ An annotation (except Widget annotations or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element
+ Subtype == 'Widget' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '')
+
+ %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box has neither Contents key nor an Alt entry in the enclosing structure element
+
+ Subtype
+
+
+
+
+
+
+ A form field shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements)
+ isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '')
+
+ A form field neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt entry in the enclosing structure element)
+
+
+
+
+
+
+ Annotations of subtype TrapNet shall not be permitted
+ isOutsideCropBox == true || (F & 2) == 2
+
+ An annotation of subtype TrapNet exists
+
+
+
+
+
+
+ Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S
+ annots_size == 0 || Tabs == 'S'
+
+ A page with annotation(s) contains Tabs key with value %1 instead of S
+
+ Tabs
+
+
+
+
+
+
+ A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340
+ structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2
+
+ A Widget annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Form
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
+
+ If the Form element omits a Role attribute (Table 348), it shall have only one child: an object reference (14.7.4.3) identifying the widget annotation per ISO 32000-1:2008, 14.8.4.5, Table 340
+ roleAttribute != null || hasOneInteractiveChild == true
+
+ The Form element omits a Role attribute and doesn't have only one child identifying the widget annotation
+
+
+
+
+
+
+
+
+ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element
+ structParentStandardType == 'Link' || structParentStandardType == 'Reference' || isOutsideCropBox == true || (F & 2) == 2
+
+ A Link annotation is artifact or is nested within %1 tag (standard type = %2) instead of Link or Reference
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
+
+ In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required
+ CT != null
+
+ CT key is missing from the media clip data dictionary
+
+
+
+
+
+
+
+
+ In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required
+ hasCorrectAlt == true
+
+ Alt key (value %1) is missing from the media clip data dictionary or has incorrect value
+
+ Alt
+
+
+
+
+
+
+
+
+ PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3
+ (structParentType == null || isArtifact == true) || isOutsideCropBox == true || (F & 2) == 2
+
+ A PrinterMark annotation is included in logical structure
+
+
+
+
+
+
+
+
+ A conforming file shall not contain any reference XObjects
+ containsRef == false
+
+ The document contains a reference XObject (Ref key in the form XObject dictionary)
+
+
+
+
+
+
+ The content of Form XObjects shall be incorporated into structure elements according to ISO 32000-1:2008, 14.7.2
+ isUniqueSemanticParent == true
+
+ Form XObject contains MCIDs and is referenced more than once
+
+
+
+
+
+
+
+
+ For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary shall have the following relationship: - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap
+ cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement)
+
+ CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6)
+
+ CIDFontOrdering
+ CMapOrdering
+ CIDFontRegistry
+ CMapRegistry
+ CIDFontSupplement
+ CMapSupplement
+
+
+
+
+
+
+ ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-1:2008, 9.7.4, Table 117
+ Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0
+
+ A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry
+
+
+
+
+
+
+
+
+ All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1
+
+ A non-standard CMap %1 is not embedded
+
+ CMapName
+
+
+
+
+
+
+
+
+ For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value in the embedded CMap stream
+ WMode == dictWMode
+
+ WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical
+
+ WMode
+ dictWMode
+
+
+
+
+
+
+ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118
+ CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || CMapName == "GBpc-EUC-H" || CMapName == "GBpc-EUC-V" || CMapName == "GBK-EUC-H" || CMapName == "GBK-EUC-V" || CMapName == "GBKp-EUC-H" || CMapName == "GBKp-EUC-V" || CMapName == "GBK2K-H" || CMapName == "GBK2K-V" || CMapName == "UniGB-UCS2-H" || CMapName == "UniGB-UCS2-V" || CMapName == "UniGB-UFT16-H" || CMapName == "UniGB-UFT16-V" || CMapName == "B5pc-H" || CMapName == "B5pc-V" || CMapName == "HKscs-B5-H" || CMapName == "HKscs-B5-V" || CMapName == "ETen-B5-H" || CMapName == "ETen-B5-V" || CMapName == "ETenms-B5-H" || CMapName == "ETenms-B5-V" || CMapName == "CNS-EUC-H" || CMapName == "CNS-EUC-V" || CMapName == "UniCNS-UCS2-H" || CMapName == "UniCNS-UCS2-V" || CMapName == "UniCNS-UFT16-H" || CMapName == "UniCNS-UTF16-V" || CMapName == "83pv-RKSJ-H" || CMapName == "90ms-RKSJ-H" || CMapName == "90ms-RKSJ-V" || CMapName == "90msp-RKSJ-H" || CMapName == "90msp-RKSJ-V" || CMapName == "90pv-RKSJ-H" || CMapName == "Add-RKSJ-H" || CMapName == "Add-RKSJ-V" || CMapName == "EUC-H" || CMapName == "EUC-V" || CMapName == "Ext-RKSJ-H" || CMapName == "Ext-RKSJ-V" || CMapName == "H" || CMapName == "V" || CMapName == "UniJIS-UCS2-H" || CMapName == "UniJIS-UCS2-V" || CMapName == "UniJIS-UCS2-HW-H" || CMapName == "UniJIS-UCS2-HW-V" || CMapName == "UniJIS-UTF16-H" || CMapName == "UniJIS-UTF16-V" || CMapName == "KSC-EUC-H" || CMapName == "KSC-EUC-V" || CMapName == "KSCms-UHC-H" || CMapName == "KSCms-UHC-V" || CMapName == "KSCms-UHC-HW-H" || CMapName == "KSCms-UHC-HW-V" || CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V"
+
+ A CMap references another non-standard CMap %1
+
+ CMapName
+
+
+
+
+
+
+
+
+ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9
+ Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1
+
+ The font program is not embedded
+
+
+
+
+
+
+
+
+ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced solely in text rendering mode 3 is not rendered and is thus exempt from the requirements that impact the visual representation of the glyphs of a font. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor
+ renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true
+
+ Not all glyphs referenced for rendering are present in the embedded font program
+
+
+
+
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true
+
+ A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program
+
+
+
+
+
+
+ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not
+ fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true
+
+ A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset
+
+
+
+
+
+
+ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent
+ renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1
+
+ Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2)
+
+ widthFromFontProgram
+ widthFromDictionary
+
+
+
+
+
+
+ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out
+ isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0)
+
+ The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries
+
+
+
+
+
+
+ All non-symbolic TrueType fonts shall have either MacRomanEncoding or WinAnsiEncoding as the value for the Encoding key in the Font dictionary or as the value for the BaseEncoding key in the dictionary which is the value of the Encoding key in the Font dictionary. In addition, no non-symbolic TrueType font shall define a Differences array unless all of the glyph names in the Differences array are listed in the Adobe Glyph List and the embedded font program contains at least the Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' table
+ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true))
+
+ A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3)
+
+ Encoding
+ containsDifferences
+ differencesAreUnicodeCompliant
+
+
+
+
+
+
+ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
+ isSymbolic == false || Encoding == null
+
+ A symbolic TrueType font specifies an Encoding entry in its dictionary
+
+
+
+
+
+
+ The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding
+ isSymbolic == false || nrCmaps == 1 || cmap30Present == true
+
+ The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0)
+
+ nrCmaps
+
+
+
+
+
+
+ The Font dictionary of all fonts shall define the map of all used character codes to Unicode values, either via a ToUnicode entry, or other mechanisms as defined in ISO 14289-1, 7.21.7
+ toUnicode != null
+
+ The glyph can not be mapped to Unicode
+
+
+
+
+
+
+
+
+ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE
+ toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1)
+
+ The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard
+
+
+
+
+
+
+ A PDF/UA compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators, regardless of text rendering mode, in any content stream
+ name != ".notdef"
+
+ The document contains a reference to the .notdef glyph
+
+
+
+
+
+
+ Text should not contain repeated non space characters
+ isNonSpace == false || numberOfRepeatedCharacters < 5
+
+ Text contains %1 repeated non space characters
+
+ numberOfRepeatedCharacters
+
+
+
+
+
+
+ Text should not contain repeated space characters
+ isNonSpace == true || numberOfRepeatedCharacters < 3
+
+ Text contains %1 repeated space characters
+
+ numberOfRepeatedCharacters
+
+
+
+
+
+
+ Pages shall have the same orientation
+ orientation == 'Square' || gMostCommonPageOrientation == orientation
+
+ Page %1 has different orientation
+
+ pageNumber + 1
+
+
+
+
+
+
+ The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1
+ textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0
+
+ contrastRatio = %1
+
+ contrastRatio
+
+
+
+
+
+
+ Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality
+ textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0
+
+ textSize = %1
+
+ textSize
+
+
+
+
+
+
+ Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page
+ page != lastPage || hasBBox == true
+
+ "Figure" structure element on a single page with no bounding box
+
+
+
+
+
+
+
+
+ Links shall contain an alternate description via their Contents or Alt keys or in the text value
+ (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || (Alt != null && Alt != '' && altIsLink == false)
+
+ A link annotation does not include an alternate description in the Contents or Alt Keys or in the text value
+
+
+
+
+
+
+
+
+ Table shouldn't have merged cells
+ ColSpan == 1 && RowSpan == 1
+
+ Table has merged cells
+
+
+
+
+
+
+ Table shouldn't have merged cells
+ ColSpan == 1 && RowSpan == 1
+
+ Table has merged cells
+
+
+
+
+
+
+ Redundant paragraph
+ correctType != null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Redundant span
+ correctType != null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Redundant heading
+ correctType != null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Redundant numbered heading
+ correctType != null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ TOCI shall contain one or more text lines
+ errorCodes.split(',').filter(elem => elem == 1000).length == 0
+
+ TOCI doesn't have a text
+
+
+
+ structureID
+
+
+
+
+
+
+
+ null
+ mostCommonOrientation
+
+
+ 0
+ Lang_size
+
+
+ false
+ true
+
+
+ false
+ true
+
+
+
diff --git a/PDF_UA/WCAG-2-2.xml b/PDF_UA/WCAG-2-2.xml
new file mode 100644
index 00000000..63c4edd4
--- /dev/null
+++ b/PDF_UA/WCAG-2-2.xml
@@ -0,0 +1,814 @@
+
+
+
+ WCAG 2.2 validation profile
+ Extra rules for WCAG 2.2 validation in addition to PDF/UA-1
+
+
+
+
+
+ Text should not contain repeated non space characters
+ isNonSpace == false || numberOfRepeatedCharacters < 5
+
+ Text contains %1 repeated non space characters
+
+ numberOfRepeatedCharacters
+
+
+
+
+
+
+ Text should not contain repeated space characters
+ isNonSpace == true || numberOfRepeatedCharacters < 3
+
+ Text contains %1 repeated space characters
+
+ numberOfRepeatedCharacters
+
+
+
+
+
+
+ Underlined text
+ isUnderlined == false || parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0
+
+ Underlined text is detected
+
+
+
+
+
+
+ If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element
+ hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0
+
+ Text has a different style and not tagged as Span, Em, Strong or other appropriate inline element
+
+
+
+
+
+
+ Pages shall have the same orientation
+ orientation == 'Square' || gMostCommonPageOrientation == orientation
+
+ Page %1 has different orientation
+
+ pageNumber + 1
+
+
+
+
+
+
+ The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1
+ textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0
+
+ contrastRatio = %1
+
+ contrastRatio
+
+
+
+
+
+
+ Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality
+ textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0
+
+ textSize = %1
+
+ textSize
+
+
+
+
+
+
+ Document should not contain illegible font
+ fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && fontName.indexOf('VladimirScript') == -1 && (fontName.indexOf('HarlowSolid') == -1 || isItalic != true)
+
+ Document contains illegible font
+
+
+
+
+
+
+ Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page
+ page != lastPage || hasBBox == true
+
+ "Figure" structure element on a single page with no bounding box
+
+
+
+
+
+
+
+
+ Links shall contain an alternate description via their Contents or Alt keys or in the text value
+ (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || (Alt != null && Alt != '' && altIsLink == false)
+
+ A link annotation does not include an alternate description in the Contents or Alt Keys or in the text value
+
+
+
+
+
+
+
+
+ Table shouldn't have merged cells
+ ColSpan == 1 && RowSpan == 1
+
+ Table has merged cells
+
+
+
+
+
+
+ Table shouldn't have merged cells
+ ColSpan == 1 && RowSpan == 1
+
+ Table has merged cells
+
+
+
+
+
+
+ Table shouldn't have merged cells
+ colSpan == 1 && rowSpan == 1
+
+ Table has merged cells
+
+
+
+ structureID
+
+
+
+
+
+
+ Incorrect use of a paragraph
+ correctSemanticScore >= 0.75 || correctType == null || correctType == 'H'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Incorrect use of a span
+ correctSemanticScore >= 0.75 || correctType == null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Incorrect use of a heading
+ correctSemanticScore >= 0.75 || correctType == null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Incorrect use of a numbered heading
+ correctSemanticScore >= 0.75 || correctType == null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Incorrect table element
+ hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0)
+
+ score = %1, correct type = %2, structure id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ Missing table element
+ hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem == true) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0)
+
+ score = %1, correct type = %2, structure id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ This structure element should be a heading instead of a paragraph
+ correctType != 'H' && correctType != 'Hn'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ This structure element should be a span instead of a paragraph
+ correctType != 'Span'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ This structure element should be a paragraph instead of a span
+ correctType != 'P'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ This structure element should be a heading instead of a span
+ correctType != 'H' && correctType != 'Hn'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ This structure element should be a paragraph instead of a heading
+ correctType != 'P'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ This structure element should be a paragraph instead of a numbered heading
+ correctType != 'P'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Redundant paragraph
+ correctType != null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Redundant span
+ correctType != null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Redundant heading
+ correctType != null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ Redundant numbered heading
+ correctType != null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ This structure element should be a caption instead of a paragraph
+ correctType != 'Caption'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ The structure type and attributes of list elements shall be semantically appropriate
+ hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true)
+
+ score = %1, correct type = %2, structure id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ The structure type and attributes of a list shall be semantically appropriate
+ hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ The structure type and attributes of a list item shall be semantically appropriate
+ hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ The structure type and attributes of a list body shall be semantically appropriate
+ hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ A table element is incorrectly tagged as a list element or a list has the wrong numbering
+ hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && standardType != 'Lbl' && standardType != 'LBody')
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ This structure element should be a part or several different paragraphs instead of a paragraph
+ correctType != 'Part' || correctSemanticScore < 0.75
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+ The structure type and attributes of a TOCI shall be semantically appropriate
+ correctType != 'TOCI' || standardType == 'TOCI'
+
+ score = %1, correct type = %2, structure id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ TOCI shall contain one or more text lines
+ errorCodes.split(',').filter(elem => elem == 1000).length == 0
+
+ TOCI doesn't have a text
+
+
+
+ structureID
+
+
+
+
+
+
+ TOCI page label shall match the destination page
+ errorCodes.split(',').filter(elem => elem == 1002).length == 0
+
+ TOCI has a wrong page label. Possible page number(s), which page label could be used: %1
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1002)]
+
+ structureID
+
+
+
+
+
+
+ TOCI shall have a right alignment that matches a right alignment of other TOCIs
+ errorCodes.split(',').filter(elem => elem == 1003).length == 0
+
+ TOCI has a bad right alignment
+
+
+
+ structureID
+
+
+
+
+
+
+ This list and neighbor list(s) should be tagged as one list
+ errorCodes.split(',').filter(elem => elem == 1200).length == 0
+
+ This list and neighbor list(s) should be tagged as one list
+
+
+
+ structureID
+
+
+
+
+
+
+ This TOC and neighbor TOC(s) should be tagged as one TOC
+ errorCodes.split(',').filter(elem => elem == 1006).length == 0
+
+ This TOC and neighbor TOC(s) should be tagged as one TOC
+
+
+
+ structureID
+
+
+
+
+
+
+ The number of rows of this table does not match the number of rows of the visual representation of this table
+ errorCodes.split(',').filter(elem => elem == 1104).length == 0
+
+ The number of rows %1 of this table does not match the number of rows %2 of the visual representation of this table
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[0]
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[1]
+ structureID
+
+
+
+
+
+
+ The number of columns of this table does not match the number of columns of the visual representation of this table
+ errorCodes.split(',').filter(elem => elem == 1105).length == 0
+
+ The number of columns %1 of this table does not match the number of columns %2 of the visual representation of this table
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[0]
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[1]
+ structureID
+
+
+
+
+
+
+ The row span of this table cell does not match the row span of the visual representation of this table cell
+ errorCodes.split(',').filter(elem => elem == 1106).length == 0
+
+ The row span %1 of this table cell does not match the row span %2 of the visual representation of this table cell
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[0]
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[1]
+ structureID
+
+
+
+
+
+
+ The column span of this table cell does not match the column span of the visual representation of this table cell
+ errorCodes.split(',').filter(elem => elem == 1107).length == 0
+
+ The column span %1 of this table cell does not match the column span %2 of the visual representation of this table cell
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[0]
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[1]
+ structureID
+
+
+
+
+
+
+ This content should be tagged as a list item
+ false
+
+ This content should be tagged as a list item
+
+
+
+ structureID
+
+
+
+
+
+
+ This cell is below than some cells in the next row
+ errorCodes.split(',').filter(elem => elem == 1100).length == 0
+
+ This cell is below than some cells in the next row
+
+
+
+ structureID
+
+
+
+
+
+
+ This cell is above than some cells in the previous row
+ errorCodes.split(',').filter(elem => elem == 1101).length == 0
+
+ This cell is above than some cells in the previous row
+
+
+
+ structureID
+
+
+
+
+
+
+ This cell is to the right of some cells in the next column
+ errorCodes.split(',').filter(elem => elem == 1102).length == 0
+
+ This cell is to the right of some cells in the next column
+
+
+
+ structureID
+
+
+
+
+
+
+ This cell is to the left of some cells in the previous column
+ errorCodes.split(',').filter(elem => elem == 1103).length == 0
+
+ This cell is to the left of some cells in the previous column
+
+
+
+ structureID
+
+
+
+
+
+
+ This structure element should be a table cell instead of a table header
+ correctType != 'TD'
+
+ score = %1, correct type = %2, id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+ TOCI text should be presented in the document
+ errorCodes.split(',').filter(elem => elem == 1007).length == 0
+
+ TOCI text is not found in the document
+
+
+
+ structureID
+
+
+
+
+
+
+ TOCI text should be presented on a destination page
+ errorCodes.split(',').filter(elem => elem == 1008).length == 0
+
+ TOCI text is not found on a destination page %wrongDestinationPage%. Possible destination page number(s): %possiblePageNumbers%
+
+ errorArguments.split(';;')[errorCodes.split(',')
+ .findIndex(elem => elem == 1008)].split(';')[0]
+ errorArguments.split(';;')[errorCodes.split(',')
+ .findIndex(elem => elem == 1008)].split(';')[1]
+ structureID
+
+
+
+
+
+
+ TOCI should have a destination
+ errorCodes.split(',').filter(elem => elem == 1009).length == 0
+
+ TOCI doesn't have a destination. Possible destination page number(s): %1
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1009)]
+
+ structureID
+
+
+
+
+
+
+ TOCI should have a correct page label
+ errorCodes.split(',').filter(elem => elem == 1010).length == 0
+
+ TOCI has a wrong page label. Possible page number(s), which page label could be used: %1
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1010)]
+
+ structureID
+
+
+
+
+
+
+ TOCI should have a correct numbering
+ errorCodes.split(',').filter(elem => elem == 1011).length == 0
+
+ TOCI has a wrong numbering. The heading number cannot start with %wrongNumbering%
+
+ errorArguments.split(';;')[errorCodes.split(',')
+ .findIndex(elem => elem == 1011)].split(';')[0]
+ errorArguments.split(';;')[errorCodes.split(',')
+ .findIndex(elem => elem == 1011)].split(';')[1]
+ structureID
+
+
+
+
+
+
+ List should contain list items
+ errorCodes.split(',').filter(elem => elem == 1201).length == 0
+
+ List contains only one child - list
+
+
+
+
+
+
+ The structure type and attributes of a list item shall be semantically appropriate
+ errorCodes.split(',').filter(elem => elem == 1202).length == 0
+
+ This list item should be tagged as several different list items
+
+
+
+
+
+
+ This structure element should be a note instead of a span
+ correctType != 'Note'
+
+ This structure element should be a note instead of a span
+
+
+
+
+
+
+ This structure element should be a note instead of a paragraph
+ correctType != 'Note'
+
+ This structure element should be a note instead of a paragraph
+
+
+
+
+
+
+ The structure type and attributes of a heading shall be semantically appropriate
+ errorCodes.split(',').filter(elem => elem == 1300).length == 0
+
+ This node is the single child with content. One of its ancestor nodes should be tagged as heading instead of this one
+
+
+
+
+
+
+
+ null
+ mostCommonOrientation
+
+
+
diff --git a/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t01.xml b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t01.xml
new file mode 100644
index 00000000..938d7a9a
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ WCAG 2.2 - 1.3 Adaptable - 1.3.1 Info and Relationships - Repeated non space characters
+ Text should not contain repeated non space characters
+
+
+
+
+
+ Text should not contain repeated non space characters
+ isNonSpace == false || numberOfRepeatedCharacters < 5
+
+ Text contains %1 repeated non space characters
+
+ numberOfRepeatedCharacters
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t02.xml b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t02.xml
new file mode 100644
index 00000000..a7941b37
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ WCAG 2.2 - 1.3 Adaptable - 1.3.1 Info and Relationships - Repeated space characters
+ Text should not contain repeated space characters
+
+
+
+
+
+ Text should not contain repeated space characters
+ isNonSpace == true || numberOfRepeatedCharacters < 3
+
+ Text contains %1 repeated space characters
+
+ numberOfRepeatedCharacters
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t03.xml b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t03.xml
new file mode 100644
index 00000000..a46e6e12
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t03.xml
@@ -0,0 +1,21 @@
+
+
+
+ WCAG 2.2 - 1.3 Adaptable - 1.3.1 Info and Relationships - Underlined text
+ Underlined text
+
+
+
+
+
+ Underlined text
+ isUnderlined == false || parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0
+
+ Underlined text is detected
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t04.xml b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t04.xml
new file mode 100644
index 00000000..33c3c6eb
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t04.xml
@@ -0,0 +1,21 @@
+
+
+
+ WCAG 2.2 - 1.3 Adaptable - 1.3.1 Info and Relationships - Different text style
+ If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element
+
+
+
+
+
+ If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element
+ hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0
+
+ Text has a different style and not tagged as Span, Em, Strong or other appropriate inline element
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml
new file mode 100644
index 00000000..28a3bc14
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml
@@ -0,0 +1,28 @@
+
+
+
+ WCAG 2.2 - 1.3 Adaptable - 1.3.4 Orientation - Single display orientation
+ Pages shall have the same orientation
+
+
+
+
+
+ Pages shall have the same orientation
+ orientation == 'Square' || gMostCommonPageOrientation == orientation
+
+ Page %1 has different orientation
+
+ pageNumber + 1
+
+
+
+
+
+
+
+ null
+ mostCommonOrientation
+
+
+
diff --git a/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.10 Reflow/verapdf-profile-1-4-10-t01.xml b/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.10 Reflow/verapdf-profile-1-4-10-t01.xml
new file mode 100644
index 00000000..db226f18
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.10 Reflow/verapdf-profile-1-4-10-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ WCAG 2.2 - 1.4 Distinguishable - 1.4.10 Reflow - Bounding box of figure
+ Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page
+
+
+
+
+
+ Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page
+ page != lastPage || hasBBox == true
+
+ "Figure" structure element on a single page with no bounding box
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml b/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml
new file mode 100644
index 00000000..ebea8a44
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml
@@ -0,0 +1,26 @@
+
+
+
+ WCAG 2.2 - 1.4 Distinguishable - 1.4.3 Contrast (Minimum)
+ The visual presentation of text and images of text has a contrast ratio of at least 4.5:1.
+ Large-scale text and images of large-scale text have a contrast ratio of at least 3:1
+
+
+
+
+
+ The visual presentation of text and images of text has a contrast ratio of at least 4.5:1.
+ Large-scale text and images of large-scale text have a contrast ratio of at least 3:1
+ textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) :
+ (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0
+
+ contrastRatio = %1
+
+ contrastRatio
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.4 Resize Text/verapdf-profile-1-4-4-t01.xml b/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.4 Resize Text/verapdf-profile-1-4-4-t01.xml
new file mode 100644
index 00000000..9633453e
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.4 Resize Text/verapdf-profile-1-4-4-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 1.4 Distinguishable - 1.4.4 Resize Text - Small text
+ Font size is too small: text may not be resized without assistive technology
+ up to 200 percent without loss of content or functionality
+
+
+
+
+
+ Font size is too small: text may not be resized without assistive technology
+ up to 200 percent without loss of content or functionality
+ textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0
+
+ textSize = %1
+
+ textSize
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.8 Visual Presentation/verapdf-profile-1-4-8-t01.xml b/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.8 Visual Presentation/verapdf-profile-1-4-8-t01.xml
new file mode 100644
index 00000000..b91cf040
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.8 Visual Presentation/verapdf-profile-1-4-8-t01.xml
@@ -0,0 +1,42 @@
+
+
+
+ WCAG 2.2 - 1.4 Distinguishable - 1.4.8 Visual Presentation - Illegible font
+ Document should not contain illegible font
+
+
+
+
+
+ Document should not contain illegible font
+ fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 &&
+ fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 &&
+ fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 &&
+ fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 &&
+ fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 &&
+ fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 &&
+ fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 &&
+ fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 &&
+ fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 &&
+ fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 &&
+ fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 &&
+ fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 &&
+ fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 &&
+ fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 &&
+ fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 &&
+ fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 &&
+ fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 &&
+ fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 &&
+ fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 &&
+ fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 &&
+ fontName.indexOf('VladimirScript') == -1 &&
+ (fontName.indexOf('HarlowSolid') == -1 || isItalic != true)
+
+ Document contains illegible font
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/2 Operable/2.4 Navigable/2.4.9 Link Purpose (Link Only)/verapdf-profile-2-4-9-t01.xml b/PDF_UA/WCAG/2.2/2 Operable/2.4 Navigable/2.4.9 Link Purpose (Link Only)/verapdf-profile-2-4-9-t01.xml
new file mode 100644
index 00000000..f5a15115
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/2 Operable/2.4 Navigable/2.4.9 Link Purpose (Link Only)/verapdf-profile-2-4-9-t01.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 2.4 Navigable - 2.4.9 Link Purpose (Link Only) - Alternate description of Link
+ Links shall contain an alternate description via their Contents or Alt keys or in the text value
+
+
+
+
+
+ Links shall contain an alternate description via their Contents or Alt keys or in the text value
+ (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true ||
+ (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) ||
+ (Alt != null && Alt != '' && altIsLink == false)
+
+ A link annotation does not include an alternate description in the Contents or Alt Keys or in the text value
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t01.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t01.xml
new file mode 100644
index 00000000..e533355c
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.1 Parsing - Merged table cells
+ Table shouldn't have merged cells
+
+
+
+
+
+ Table shouldn't have merged cells
+ ColSpan == 1 && RowSpan == 1
+
+ Table has merged cells
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t02.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t02.xml
new file mode 100644
index 00000000..2987c4c0
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t02.xml
@@ -0,0 +1,21 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.1 Parsing - Merged table cells
+ Table shouldn't have merged cells
+
+
+
+
+
+ Table shouldn't have merged cells
+ ColSpan == 1 && RowSpan == 1
+
+ Table has merged cells
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t03.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t03.xml
new file mode 100644
index 00000000..00c3017d
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t03.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.1 Parsing - Merged table cells
+ Table shouldn't have merged cells
+
+
+
+
+
+ Table shouldn't have merged cells
+ colSpan == 1 && rowSpan == 1
+
+ Table has merged cells
+
+
+
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml
new file mode 100644
index 00000000..b861ac14
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml
@@ -0,0 +1,24 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph
+ Incorrect use of a paragraph
+
+
+
+
+
+ Incorrect use of a paragraph
+ correctSemanticScore >= 0.75 || correctType == null || correctType == 'H'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml
new file mode 100644
index 00000000..bdaaec98
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml
@@ -0,0 +1,24 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Span
+ Incorrect use of a span
+
+
+
+
+
+ Incorrect use of a span
+ correctSemanticScore >= 0.75 || correctType == null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml
new file mode 100644
index 00000000..55514da7
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml
@@ -0,0 +1,24 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading
+ Incorrect use of a heading
+
+
+
+
+
+ Incorrect use of a heading
+ correctSemanticScore >= 0.75 || correctType == null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml
new file mode 100644
index 00000000..a059f840
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml
@@ -0,0 +1,24 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Numbered heading
+ Incorrect use of a numbered heading
+
+
+
+
+
+ Incorrect use of a numbered heading
+ correctSemanticScore >= 0.75 || correctType == null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml
new file mode 100644
index 00000000..48c16a7c
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml
@@ -0,0 +1,29 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table element
+ Incorrect table element
+
+
+
+
+
+ Incorrect table element
+ hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) ||
+ (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') &&
+ correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' &&
+ correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' ||
+ parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0)
+
+ score = %1, correct type = %2, structure id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml
new file mode 100644
index 00000000..5f388e60
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml
@@ -0,0 +1,29 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Missing table element
+ Missing table element
+
+
+
+
+
+ Missing table element
+ hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) ||
+ (isTableElem == true) || (correctType != 'TD' &&
+ correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' &&
+ correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' ||
+ parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0)
+
+ score = %1, correct type = %2, structure id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml
new file mode 100644
index 00000000..36d1c20d
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml
@@ -0,0 +1,24 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading instead of paragraph
+ This structure element should be a heading instead of a paragraph
+
+
+
+
+
+ This structure element should be a heading instead of a paragraph
+ correctType != 'H' && correctType != 'Hn'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml
new file mode 100644
index 00000000..21ecb8a6
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml
@@ -0,0 +1,24 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Span instead of paragraph
+ This structure element should be a span instead of a paragraph
+
+
+
+
+
+ This structure element should be a span instead of a paragraph
+ correctType != 'Span'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t12.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t12.xml
new file mode 100644
index 00000000..a55d749a
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t12.xml
@@ -0,0 +1,24 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph instead of span
+ This structure element should be a paragraph instead of a span
+
+
+
+
+
+ This structure element should be a paragraph instead of a span
+ correctType != 'P'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t13.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t13.xml
new file mode 100644
index 00000000..c15cde32
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t13.xml
@@ -0,0 +1,24 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading instead of span
+ This structure element should be a heading instead of a span
+
+
+
+
+
+ This structure element should be a heading instead of a span
+ correctType != 'H' && correctType != 'Hn'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t14.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t14.xml
new file mode 100644
index 00000000..d87c0be3
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t14.xml
@@ -0,0 +1,24 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph instead of heading
+ This structure element should be a paragraph instead of a heading
+
+
+
+
+
+ This structure element should be a paragraph instead of a heading
+ correctType != 'P'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t15.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t15.xml
new file mode 100644
index 00000000..7af45418
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t15.xml
@@ -0,0 +1,24 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph instead of numbered heading
+ This structure element should be a paragraph instead of a numbered heading
+
+
+
+
+
+ This structure element should be a paragraph instead of a numbered heading
+ correctType != 'P'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t16.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t16.xml
new file mode 100644
index 00000000..1caed045
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t16.xml
@@ -0,0 +1,24 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Redundant paragraph
+ Redundant paragraph
+
+
+
+
+
+ Redundant paragraph
+ correctType != null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t17.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t17.xml
new file mode 100644
index 00000000..78aab42e
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t17.xml
@@ -0,0 +1,24 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Redundant span
+ Redundant span
+
+
+
+
+
+ Redundant span
+ correctType != null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t18.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t18.xml
new file mode 100644
index 00000000..1f091526
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t18.xml
@@ -0,0 +1,24 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Redundant heading
+ Redundant heading
+
+
+
+
+
+ Redundant heading
+ correctType != null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t19.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t19.xml
new file mode 100644
index 00000000..6098bbec
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t19.xml
@@ -0,0 +1,24 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Redundant numbered heading
+ Redundant numbered heading
+
+
+
+
+
+ Redundant numbered heading
+ correctType != null
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t20.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t20.xml
new file mode 100644
index 00000000..19bf368f
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t20.xml
@@ -0,0 +1,24 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Caption instead of paragraph
+ This structure element should be a caption instead of a paragraph
+
+
+
+
+
+ This structure element should be a caption instead of a paragraph
+ correctType != 'Caption'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t21.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t21.xml
new file mode 100644
index 00000000..b9836fdf
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t21.xml
@@ -0,0 +1,26 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - List elements
+ The structure type and attributes of list elements shall be semantically appropriate
+
+
+
+
+
+ The structure type and attributes of list elements shall be semantically appropriate
+ hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' &&
+ correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true)
+
+ score = %1, correct type = %2, structure id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t22.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t22.xml
new file mode 100644
index 00000000..e313fd9c
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t22.xml
@@ -0,0 +1,27 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - List elements
+ The structure type and attributes of a list shall be semantically appropriate
+
+
+
+
+
+ The structure type and attributes of a list shall be semantically appropriate
+ hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) ||
+ correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' ||
+ correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' ||
+ correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t23.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t23.xml
new file mode 100644
index 00000000..97bc74a9
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t23.xml
@@ -0,0 +1,27 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - List item
+ The structure type and attributes of a list item shall be semantically appropriate
+
+
+
+
+
+ The structure type and attributes of a list item shall be semantically appropriate
+ hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) ||
+ correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' ||
+ correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' ||
+ correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t25.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t25.xml
new file mode 100644
index 00000000..62354c5e
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t25.xml
@@ -0,0 +1,27 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - List body
+ The structure type and attributes of a list body shall be semantically appropriate
+
+
+
+
+
+ The structure type and attributes of a list body shall be semantically appropriate
+ hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) ||
+ correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' ||
+ correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' ||
+ correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI'
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t26.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t26.xml
new file mode 100644
index 00000000..825f657f
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t26.xml
@@ -0,0 +1,27 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - List
+ A table element is incorrectly tagged as a list element or a list has the wrong numbering
+
+
+
+
+
+ A table element is incorrectly tagged as a list element or a list has the wrong numbering
+ hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' &&
+ correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' &&
+ correctType != 'Table') || (standardType != 'L' && standardType != 'LI' &&
+ standardType != 'Lbl' && standardType != 'LBody')
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t27.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t27.xml
new file mode 100644
index 00000000..bc8356c9
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t27.xml
@@ -0,0 +1,24 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph
+ This structure element should be a part or several different paragraphs instead of a paragraph
+
+
+
+
+
+ This structure element should be a part or several different paragraphs instead of a paragraph
+ correctType != 'Part' || correctSemanticScore < 0.75
+
+ score = %1, correct type = %2
+
+ correctSemanticScore
+ correctType
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t28.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t28.xml
new file mode 100644
index 00000000..7338fa3b
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t28.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI
+ The structure type and attributes of a TOCI shall be semantically appropriate
+
+
+
+
+
+ The structure type and attributes of a TOCI shall be semantically appropriate
+ correctType != 'TOCI' || standardType == 'TOCI'
+
+ score = %1, correct type = %2, structure id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t29.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t29.xml
new file mode 100644
index 00000000..c8c7fe81
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t29.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI without text
+ TOCI shall contain one or more text lines
+
+
+
+
+
+ TOCI shall contain one or more text lines
+ errorCodes.split(',').filter(elem => elem == 1000).length == 0
+
+ TOCI doesn't have a text
+
+
+
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t31.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t31.xml
new file mode 100644
index 00000000..16778b69
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t31.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI page
+ TOCI page label shall match the destination page
+
+
+
+
+
+ TOCI page label shall match the destination page
+ errorCodes.split(',').filter(elem => elem == 1002).length == 0
+
+ TOCI has a wrong page label. Possible page number(s), which page label could be used: %1
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1002)]
+
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t32.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t32.xml
new file mode 100644
index 00000000..e31ed16d
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t32.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Right alignment of TOCIs
+ TOCI shall have a right alignment that matches a right alignment of other TOCIs
+
+
+
+
+
+ TOCI shall have a right alignment that matches a right alignment of other TOCIs
+ errorCodes.split(',').filter(elem => elem == 1003).length == 0
+
+ TOCI has a bad right alignment
+
+
+
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t34.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t34.xml
new file mode 100644
index 00000000..0035d621
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t34.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - List tagging
+ This list and neighbor list(s) should be tagged as one list
+
+
+
+
+
+ This list and neighbor list(s) should be tagged as one list
+ errorCodes.split(',').filter(elem => elem == 1200).length == 0
+
+ This list and neighbor list(s) should be tagged as one list
+
+
+
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t35.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t35.xml
new file mode 100644
index 00000000..aa78c507
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t35.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOC tagging
+ This TOC and neighbor TOC(s) should be tagged as one TOC
+
+
+
+
+
+ This TOC and neighbor TOC(s) should be tagged as one TOC
+ errorCodes.split(',').filter(elem => elem == 1006).length == 0
+
+ This TOC and neighbor TOC(s) should be tagged as one TOC
+
+
+
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t36.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t36.xml
new file mode 100644
index 00000000..323ea292
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t36.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table rows
+ The number of rows of this table does not match the number of rows of the visual representation of this table
+
+
+
+
+
+ The number of rows of this table does not match the number of rows of the visual representation of this table
+ errorCodes.split(',').filter(elem => elem == 1104).length == 0
+
+ The number of rows %1 of this table does not match the number of rows %2 of the visual representation of this table
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[0]
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[1]
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t37.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t37.xml
new file mode 100644
index 00000000..073c687f
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t37.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table columns
+ The number of columns of this table does not match the number of columns of the visual representation of this table
+
+
+
+
+
+ The number of columns of this table does not match the number of columns of the visual representation of this table
+ errorCodes.split(',').filter(elem => elem == 1105).length == 0
+
+ The number of columns %1 of this table does not match the number of columns %2 of the visual representation of this table
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[0]
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[1]
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t38.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t38.xml
new file mode 100644
index 00000000..e2933e6b
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t38.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell row span
+ The row span of this table cell does not match the row span of the visual representation of this table cell
+
+
+
+
+
+ The row span of this table cell does not match the row span of the visual representation of this table cell
+ errorCodes.split(',').filter(elem => elem == 1106).length == 0
+
+ The row span %1 of this table cell does not match the row span %2 of the visual representation of this table cell
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[0]
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[1]
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t39.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t39.xml
new file mode 100644
index 00000000..6ae927de
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t39.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell column span
+ The column span of this table cell does not match the column span of the visual representation of this table cell
+
+
+
+
+
+ The column span of this table cell does not match the column span of the visual representation of this table cell
+ errorCodes.split(',').filter(elem => elem == 1107).length == 0
+
+ The column span %1 of this table cell does not match the column span %2 of the visual representation of this table cell
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[0]
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[1]
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t40.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t40.xml
new file mode 100644
index 00000000..3083f180
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t40.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - List item
+ This content should be tagged as a list item
+
+
+
+
+
+ This content should be tagged as a list item
+ false
+
+ This content should be tagged as a list item
+
+
+
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t41.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t41.xml
new file mode 100644
index 00000000..bd039ebf
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t41.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell position
+ This cell is below than some cells in the next row
+
+
+
+
+
+ This cell is below than some cells in the next row
+ errorCodes.split(',').filter(elem => elem == 1100).length == 0
+
+ This cell is below than some cells in the next row
+
+
+
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t42.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t42.xml
new file mode 100644
index 00000000..b918a528
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t42.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell position
+ This cell is above than some cells in the previous row
+
+
+
+
+
+ This cell is above than some cells in the previous row
+ errorCodes.split(',').filter(elem => elem == 1101).length == 0
+
+ This cell is above than some cells in the previous row
+
+
+
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t43.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t43.xml
new file mode 100644
index 00000000..2d30c81c
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t43.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell position
+ This cell is to the right of some cells in the next column
+
+
+
+
+
+ This cell is to the right of some cells in the next column
+ errorCodes.split(',').filter(elem => elem == 1102).length == 0
+
+ This cell is to the right of some cells in the next column
+
+
+
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t44.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t44.xml
new file mode 100644
index 00000000..fff6e382
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t44.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell position
+ This cell is to the left of some cells in the previous column
+
+
+
+
+
+ This cell is to the left of some cells in the previous column
+ errorCodes.split(',').filter(elem => elem == 1103).length == 0
+
+ This cell is to the left of some cells in the previous column
+
+
+
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t45.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t45.xml
new file mode 100644
index 00000000..5101a461
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t45.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell
+ This structure element should be a table cell instead of a table header
+
+
+
+
+
+ This structure element should be a table cell instead of a table header
+ correctType != 'TD'
+
+ score = %1, correct type = %2, id = %3
+
+ correctSemanticScore
+ correctType
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t46.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t46.xml
new file mode 100644
index 00000000..7a8a53a1
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t46.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI text on document
+ TOCI text should be presented in the document
+
+
+
+
+
+ TOCI text should be presented in the document
+ errorCodes.split(',').filter(elem => elem == 1007).length == 0
+
+ TOCI text is not found in the document
+
+
+
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t47.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t47.xml
new file mode 100644
index 00000000..2b0df8ec
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t47.xml
@@ -0,0 +1,28 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI text on page
+ TOCI text should be presented on a destination page
+
+
+
+
+
+ TOCI text should be presented on a destination page
+ errorCodes.split(',').filter(elem => elem == 1008).length == 0
+
+ TOCI text is not found on a destination page %wrongDestinationPage%.
+ Possible destination page number(s): %possiblePageNumbers%
+
+ errorArguments.split(';;')[errorCodes.split(',')
+ .findIndex(elem => elem == 1008)].split(';')[0]
+ errorArguments.split(';;')[errorCodes.split(',')
+ .findIndex(elem => elem == 1008)].split(';')[1]
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t48.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t48.xml
new file mode 100644
index 00000000..7b151506
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t48.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Destination of TOCI
+ TOCI should have a destination
+
+
+
+
+
+ TOCI should have a destination
+ errorCodes.split(',').filter(elem => elem == 1009).length == 0
+
+ TOCI doesn't have a destination. Possible destination page number(s): %1
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1009)]
+
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t49.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t49.xml
new file mode 100644
index 00000000..5b49e6d6
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t49.xml
@@ -0,0 +1,25 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Page label of TOCI
+ TOCI should have a correct page label
+
+
+
+
+
+ TOCI should have a correct page label
+ errorCodes.split(',').filter(elem => elem == 1010).length == 0
+
+ TOCI has a wrong page label. Possible page number(s), which page label could be used: %1
+
+ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1010)]
+
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t50.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t50.xml
new file mode 100644
index 00000000..c721d360
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t50.xml
@@ -0,0 +1,27 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI numbering
+ TOCI should have a correct numbering
+
+
+
+
+
+ TOCI should have a correct numbering
+ errorCodes.split(',').filter(elem => elem == 1011).length == 0
+
+ TOCI has a wrong numbering. The heading number cannot start with %wrongNumbering%
+
+ errorArguments.split(';;')[errorCodes.split(',')
+ .findIndex(elem => elem == 1011)].split(';')[0]
+ errorArguments.split(';;')[errorCodes.split(',')
+ .findIndex(elem => elem == 1011)].split(';')[1]
+ structureID
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t51.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t51.xml
new file mode 100644
index 00000000..d13d8037
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t51.xml
@@ -0,0 +1,21 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - List without list items
+ List should contain list items
+
+
+
+
+
+ List should contain list items
+ errorCodes.split(',').filter(elem => elem == 1201).length == 0
+
+ List contains only one child - list
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t52.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t52.xml
new file mode 100644
index 00000000..c3af2954
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t52.xml
@@ -0,0 +1,21 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - List item
+ The structure type and attributes of a list item shall be semantically appropriate
+
+
+
+
+
+ The structure type and attributes of a list item shall be semantically appropriate
+ errorCodes.split(',').filter(elem => elem == 1202).length == 0
+
+ This list item should be tagged as several different list items
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t53.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t53.xml
new file mode 100644
index 00000000..4392523e
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t53.xml
@@ -0,0 +1,21 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Note instead of span
+ This structure element should be a note instead of a span
+
+
+
+
+
+ This structure element should be a note instead of a span
+ correctType != 'Note'
+
+ This structure element should be a note instead of a span
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t54.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t54.xml
new file mode 100644
index 00000000..aa2ff35f
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t54.xml
@@ -0,0 +1,21 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Note instead of paragraph
+ This structure element should be a note instead of a paragraph
+
+
+
+
+
+ This structure element should be a note instead of a paragraph
+ correctType != 'Note'
+
+ This structure element should be a note instead of a paragraph
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t55.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t55.xml
new file mode 100644
index 00000000..938b5ca6
--- /dev/null
+++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t55.xml
@@ -0,0 +1,22 @@
+
+
+
+ WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading
+ The structure type and attributes of a heading shall be semantically appropriate
+
+
+
+
+
+ The structure type and attributes of a heading shall be semantically appropriate
+ errorCodes.split(',').filter(elem => elem == 1300).length == 0
+
+ This node is the single child with content. One of its ancestor nodes should be tagged as heading
+ instead of this one
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t01.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t01.xml
new file mode 100644
index 00000000..868bad18
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t01.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.1 General - Artifact inside tagged content
+ Content marked as Artifact should not present inside tagged content
+
+
+
+
+
+ Content marked as Artifact should not present inside tagged content
+ tag != 'Artifact' || (isTaggedContent == false || isArtifact == true)
+
+ Content marked as Artifact is present inside tagged content (parent struct element %1)
+
+ parentStructureElementObjectKey
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t02.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t02.xml
new file mode 100644
index 00000000..8e630ded
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t02.xml
@@ -0,0 +1,23 @@
+
+
+
+ ISO 14289-1:2014 - 7.1 General - Tagged content inside Artifact
+ Tagged content should not present inside content marked as Artifact
+
+
+
+
+
+ Tagged content should not present inside content marked as Artifact
+ (isTaggedContent == false || isArtifact == true) || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0
+
+ Tagged content (parent struct element %1) is present inside content marked as Artifact
+
+ parentStructureElementObjectKey
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t09.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t09.xml
new file mode 100644
index 00000000..e437e799
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t09.xml
@@ -0,0 +1,25 @@
+
+
+
+ ISO 14289-1:2014 - 7.1 General - Dc title
+ The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc
+ is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which
+ clearly identifies the document
+
+
+
+
+
+ The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where
+ dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification,
+ which clearly identifies the document
+ dc_title != null && dc_title != ''
+
+ Metadata stream does not contain dc:title
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-18-5-t01.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-18-5-t01.xml
new file mode 100644
index 00000000..d197156f
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-18-5-t01.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.5 Links - Link annotation
+ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element
+
+
+
+
+
+ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element
+ structParentStandardType == 'Link' || structParentStandardType == 'Reference' ||
+ isOutsideCropBox == true || (F & 2) == 2
+
+ A Link annotation is artifact or is nested within %1 tag (standard type = %2) instead of Link or Reference
+
+ structParentType
+ structParentStandardType
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-18-8-t01.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-18-8-t01.xml
new file mode 100644
index 00000000..5c4671bb
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-18-8-t01.xml
@@ -0,0 +1,24 @@
+
+
+
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.8 PrinterMark - Logical structure
+ PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page
+ elements as defined in ISO 32000-1:2008, 14.8.2.2.3
+
+
+
+
+
+ PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3
+ (structParentType == null || isArtifact == true) || isOutsideCropBox == true || (F & 2) == 2
+
+ A PrinterMark annotation is included in logical structure
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t03.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t03.xml
new file mode 100644
index 00000000..11358166
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t03.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - children of Table
+ Table element may contain only TR, THead, TBody, TFoot and Caption elements
+
+
+
+
+
+ Table element may contain only TR, THead, TBody, TFoot and Caption elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == ''
+
+ Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead'
+ && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t04.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t04.xml
new file mode 100644
index 00000000..ab5371e1
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t04.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - parent of TR
+ TR element should be contained in Table, THead, TBody or TFoot element
+
+
+
+
+
+ TR element should be contained in Table, THead, TBody or TFoot element
+ /^(Table|THead|TBody|TFoot)$/.test(parentStandardType)
+
+ TR element contained in %1 instead of Table, THead, TBody or TFoot element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t05.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t05.xml
new file mode 100644
index 00000000..52f29578
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t05.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - parent of THead
+ THead element should be contained in Table element
+
+
+
+
+
+ THead element should be contained in Table element
+ parentStandardType == 'Table'
+
+ THead element contained in %1 instead of Table element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t06.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t06.xml
new file mode 100644
index 00000000..01225bd3
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t06.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - parent of TBody
+ TBody element should be contained in Table element
+
+
+
+
+
+ TBody element should be contained in Table element
+ parentStandardType == 'Table'
+
+ TBody element contained in %1 instead of Table element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t07.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t07.xml
new file mode 100644
index 00000000..aef4eeb3
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t07.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - parent of TFoot
+ TFoot element should be contained in Table element
+
+
+
+
+
+ TFoot element should be contained in Table element
+ parentStandardType == 'Table'
+
+ TFoot element contained in %1 instead of Table element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t08.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t08.xml
new file mode 100644
index 00000000..a81986e7
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t08.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - parent of TH
+ TH element should be contained in TR element
+
+
+
+
+
+ TH element should be contained in TR element
+ parentStandardType == 'TR'
+
+ TH element contained in %1 instead of TR element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t09.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t09.xml
new file mode 100644
index 00000000..19ae1fa4
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t09.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - parent of TD
+ TD element should be contained in TR element
+
+
+
+
+
+ TD element should be contained in TR element
+ parentStandardType == 'TR'
+
+ TD element contained in %1 instead of TR element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t10.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t10.xml
new file mode 100644
index 00000000..db533c81
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t10.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - children of TR
+ TR element may contain only TH and TD elements
+
+
+
+
+
+ TR element may contain only TH and TD elements
+ /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == ''
+
+ TR element contains %1 element(s) instead of TH or TD
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t11.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t11.xml
new file mode 100644
index 00000000..3db0cf15
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t11.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - count of THead
+ Table element should contain zero or one THead kid
+
+
+
+
+
+ Table element should contain zero or one THead kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1
+
+ Table element contains more than one THead kid
+
+
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t12.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t12.xml
new file mode 100644
index 00000000..959de3ab
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t12.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - count of TFoot
+ Table element should contain zero or one TFoot kid
+
+
+
+
+
+ Table element should contain zero or one TFoot kid
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1
+
+ Table element contains more than one TFoot kid
+
+
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t13.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t13.xml
new file mode 100644
index 00000000..02177aa3
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t13.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - TFoot and TBody
+ If Table element contains TFoot kid, Table element should contain one or more TBody kids
+
+
+
+
+
+ If Table element contains TFoot kid, Table element should contain one or more TBody kids
+ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0
+
+ Table element contains TFoot kid, but does not contain TBody kids
+
+
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t14.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t14.xml
new file mode 100644
index 00000000..66916297
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t14.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - THead and TBody
+ If Table element contains THead kid, Table element should contain one or more TBody kids
+
+
+
+
+
+ If Table element contains THead kid, Table element should contain one or more TBody kids
+ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0
+
+ Table element contains THead kid, but does not contain TBody kids
+
+
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t16.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t16.xml
new file mode 100644
index 00000000..ceb14dbf
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t16.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Caption of Table
+ Table element may contain a Caption element as its first or last kid
+
+
+
+
+
+ Table element may contain a Caption element as its first or last kid
+ kidsStandardTypes.indexOf('&Caption&') < 0
+
+ Table element contains Caption as its %1 child instead of first or last one
+
+ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t17.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t17.xml
new file mode 100644
index 00000000..45d51003
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t17.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - parent of LI
+ LI element should be contained in L element
+
+
+
+
+
+ LI element should be contained in L element
+ parentStandardType == 'L'
+
+ LI element contained in %1 instead of L element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t18.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t18.xml
new file mode 100644
index 00000000..48047505
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t18.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - parent of LBody
+ LBody element should be contained in LI element
+
+
+
+
+
+ LBody element should be contained in LI element
+ parentStandardType == 'LI'
+
+ LBody element contained in %1 instead of LI element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t19.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t19.xml
new file mode 100644
index 00000000..5f5ca145
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t19.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - children of L
+ L element may contain only L, LI and Caption elements
+
+
+
+
+
+ L element may contain only L, LI and Caption elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' && elem != 'Caption').length == 0 || kidsStandardTypes == ''
+
+ L element contains %1 element(s) instead of L, LI or Caption
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI'
+ && elem != 'Caption').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t20.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t20.xml
new file mode 100644
index 00000000..b1fcc1b9
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t20.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - children of LI
+ LI element may contain only Lbl and LBody elements
+
+
+
+
+
+ LI element may contain only Lbl and LBody elements
+ /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == ''
+
+ LI element contains %1 element(s) instead of Lbl or LBody
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t26.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t26.xml
new file mode 100644
index 00000000..d67011ee
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t26.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - parent of TOCI
+ TOCI element should be contained in TOC element
+
+
+
+
+
+ TOCI element should be contained in TOC element
+ parentStandardType == 'TOC'
+
+ TOCI element contained in %1 instead of TOC element
+
+ parentStandardType
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t27.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t27.xml
new file mode 100644
index 00000000..4edc9dc9
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t27.xml
@@ -0,0 +1,28 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - children of TOC
+ TOC element may contain only TOC, TOCI and Caption elements
+
+
+
+
+
+ TOC element may contain only TOC, TOCI and Caption elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' && elem != 'Caption').length == 0 || kidsStandardTypes == ''
+
+ TOC element contains %1 element(s) instead of TOC, TOCI or Caption
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI'
+ && elem != 'Caption').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t28.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t28.xml
new file mode 100644
index 00000000..3f14d588
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t28.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Caption of TOC
+ TOC element may contain a Caption element only as its first kid
+
+
+
+
+
+ TOC element may contain a Caption element only as its first kid
+ kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0
+
+ TOC element contains Caption as its %1 child instead of first one
+
+ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t36.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t36.xml
new file mode 100644
index 00000000..fa94f866
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t36.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - children of THead
+ THead element may contain only TR elements
+
+
+
+
+
+ THead element may contain only TR elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == ''
+
+ THead element contains %1 element(s) instead of TR
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t37.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t37.xml
new file mode 100644
index 00000000..9292b24a
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t37.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - children of TBody
+ TBody element may contain only TR elements
+
+
+
+
+
+ TBody element may contain only TR elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == ''
+
+ TBody element contains %1 element(s) instead of TR
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t38.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t38.xml
new file mode 100644
index 00000000..33586e03
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t38.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - children of TFoot
+ TFoot element may contain only TR elements
+
+
+
+
+
+ TFoot element may contain only TR elements
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == ''
+
+ TFoot element contains %1 element(s) instead of TR
+
+ kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString()
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t39.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t39.xml
new file mode 100644
index 00000000..940ccbdb
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t39.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Caption of Table
+ Table element may contain only one Caption element
+
+
+
+
+
+ Table element may contain only one Caption element
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2
+
+ Table element contains %1 Caption elements instead of one
+
+ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t40.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t40.xml
new file mode 100644
index 00000000..df512db8
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t40.xml
@@ -0,0 +1,27 @@
+
+
+
+ ISO 14289-1:2014 - 7.2 Text - Caption of List
+ L element may contain a Caption element only as its first kid
+
+
+
+
+
+ L element may contain a Caption element only as its first kid
+ kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0
+
+ L element contains Caption as its %1 child instead of first one
+
+ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2
+
+ structureID
+
+
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t01.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t01.xml
new file mode 100644
index 00000000..f3f76c0a
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t01.xml
@@ -0,0 +1,21 @@
+
+
+
+ ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - Number of H
+ Each node in the tag tree shall contain at most one child H tag
+
+
+
+
+
+ Each node in the tag tree shall contain at most one child H tag
+ kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1
+
+ A node contains more than one H tag
+
+
+
+
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t02.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t02.xml
new file mode 100644
index 00000000..70a5bdf3
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t02.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - H and Hn
+ All documents shall be either strongly or weakly structured, but not both
+
+
+
+
+
+ All documents shall be either strongly or weakly structured, but not both
+ usesHn == false
+
+ Document uses both H and H# tags
+
+
+
+
+
+
+
+ false
+ true
+
+
+
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t03.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t03.xml
new file mode 100644
index 00000000..cf11b4e7
--- /dev/null
+++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t03.xml
@@ -0,0 +1,26 @@
+
+
+
+ ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - H and Hn
+ All documents shall be either strongly or weakly structured, but not both
+
+
+
+
+
+ All documents shall be either strongly or weakly structured, but not both
+ usesH == false
+
+ Document uses both H and H# tags
+
+
+
+
+
+
+
+ false
+ true
+
+
+
diff --git a/README.md b/README.md
index 8dc9e2d4..74439a56 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,17 @@
# veraPDF validation profiles
-## PDF/A-1 (ISO 19005-1:2005 + Cor 1:2007 + Cor 2:2011)
+The repository contains all validation profiles supported by veraPDF. They are split into individual rules and then grouped into validation profiles for each supported flavor.
-The folder contains the full set of atomic validation rules covering the PDF/A-1B standard.
+The [PDF_A](https://github.com/veraPDF/veraPDF-validation-profiles/tree/integration/PDF_A) folder contains all rules for PDF/A validation against all PDF/A parts (ISO 19005) and conformance levels.
+
+The [PDF_UA](https://github.com/veraPDF/veraPDF-validation-profiles/tree/integration/PDF_UA) folder holds all rules and validation profiles for PDF/UA-1 and PDF/UA-2 validation, as well as validation of parent-child relationships in Tagged PDF structure tree for ISO 32000-1, ISO 32000-2 and ISO 32005. Finally, this folder also contains rules and validation profiles for WCAG 2.2. This is work in progress and is in the experimental stage.
+
+See [Wiki pages](https://github.com/veraPDF/veraPDF-validation-profiles/wiki) for the documentation on the profile syntax and the details for each rule.
***
© 2015 [veraPDF Consortium](http://www.verapdf.org)
-
-This work is licensed under a [Creative Commons Attribution 3.0 Unported License (CC-BY 3.0)](http://creativecommons.org/licenses/by/3.0/)
+
+This work is licensed under a [Creative Commons Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/)
diff --git a/validationProfile.xsd b/validationProfile.xsd
new file mode 100644
index 00000000..6ec2aafe
--- /dev/null
+++ b/validationProfile.xsd
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+