mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-11-09 12:32:52 +00:00
M11: PDF/A verify takes an rdf:value attribute in place of the element, not beside it (6.6.2.3.1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Pq7HyDBXygTf7jcqdsjcfn
This commit is contained in:
1 parent
abf0f94e78
commit
7dad9e784a
2 files changed
+7
-2
No files matched your search
@@ -718,6 +718,11 @@ fn xmp_value_forms_are_those_xmp_allows() {
|
||||
mistyped(r#"><crs:Contrast rdf:parseType="Resource"><rdf:value>5</rdf:value><rdf:value>five</rdf:value></crs:Contrast>"#),
|
||||
["crs:Contrast"]
|
||||
);
|
||||
assert_eq!(
|
||||
mistyped(r#"><crs:Contrast><rdf:Description rdf:value="five"><rdf:value>5</rdf:value></rdf:Description></crs:Contrast>"#),
|
||||
["crs:Contrast"]
|
||||
);
|
||||
assert!(mistyped(r#"><crs:Contrast><rdf:Description><rdf:value>5</rdf:value></rdf:Description></crs:Contrast>"#).is_empty());
|
||||
// Only parseType="Resource" has a place in XMP; an rdf:resource element holds no element.
|
||||
assert_eq!(mistyped(r#"><crs:Contrast rdf:parseType="Literal">5</crs:Contrast>"#), ["crs:Contrast"]);
|
||||
assert_eq!(mistyped(r#"><xmpMM:DerivedFrom rdf:parseType="Literal" stRef:documentID="d"/>"#), ["xmpMM:DerivedFrom"]);
|
||||
|
||||
@@ -549,10 +549,10 @@ fn fits(ty: Ty, e: &Node<'_, '_>, depth: usize) -> bool {
|
||||
// predefined properties keep their types too.
|
||||
let node = if resource { Some(*e) } else { description };
|
||||
if let Some(n) = node {
|
||||
// A qualified value has one `rdf:value`.
|
||||
// A qualified value has one `rdf:value`: an element, or an attribute in its place.
|
||||
match n.children().filter(|c| is(c, RDF, "value")).collect::<Vec<_>>().as_slice() {
|
||||
[] => {}
|
||||
[v] => return blank(e) && blank(&n) && fits(ty, v, deeper) && predefined_ok(&n, deeper),
|
||||
[v] => return n.attribute((RDF, "value")).is_none() && blank(e) && blank(&n) && fits(ty, v, deeper) && predefined_ok(&n, deeper),
|
||||
_ => return false,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user