diff --git a/src/ruleset.rnc b/src/ruleset.rnc index 3f2a9d0b6f92f02d770b2b67c6b52f64aa47cf0a..aae088899a5204e0fdb2dbbfca453297b253ae8a 100644 --- a/src/ruleset.rnc +++ b/src/ruleset.rnc @@ -18,6 +18,16 @@ Preferences = } MetadataTypeDef = + [ + s:pattern [ + s:rule [ + context = "metadata[parent::DocStrctType]" s:assert [ + test = "/Preferences/METS/Metadata/InternalName = ." + "Das Metadatum '" s:value-of [ select = "." ] "' wird nicht exportiert." + ] + ] + ] + ] element MetadataType { attribute type { "person" | "identifier" }?, ( diff --git a/test/ruleset.xspec b/test/ruleset.xspec index 26088d617391580481f76ae728e48572dfa27884..a3a01af938f46f6517de875d056fc7a34753f62c 100644 --- a/test/ruleset.xspec +++ b/test/ruleset.xspec @@ -32,6 +32,11 @@ <DocStrctType> <metadata>is-defined</metadata> </DocStrctType> + <METS> + <Metadata> + <InternalName>is-defined</InternalName> + </Metadata> + </METS> </Preferences> </context> <expect-not-assert/> @@ -42,6 +47,24 @@ <DocStrctType> <metadata>is-not-defined</metadata> </DocStrctType> + <METS> + <Metadata> + <InternalName>is-defined</InternalName> + </Metadata> + </METS> + </Preferences> + </context> + <expect-assert/> + </scenario> + <scenario label="Metadatum wird nicht exportiert"> + <context> + <Preferences xmlns=""> + <MetadataType> + <Name>is-defined</Name> + </MetadataType> + <DocStrctType> + <metadata>is-not-defined</metadata> + </DocStrctType> </Preferences> </context> <expect-assert/>