Last active
February 23, 2024 22:59
-
-
Save aj-stein-nist/3c89090184bc446b4759a41b52cf3ae3 to your computer and use it in GitHub Desktop.
Example model modules and document instances for PR usnistgov/metaschema#552 and issue #548
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<?xml-model href="https://raw.githubusercontent.com/usnistgov/metaschema/develop/schema/xml/metaschema.xsd" type="application/xml" schematypens="http://www.w3.org/2001/XMLSchema"?> | |
<METASCHEMA xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xmlns="http://csrc.nist.gov/ns/oscal/metaschema/1.0"> | |
<schema-name>Let Experiment Model</schema-name> | |
<schema-version>0.1.0</schema-version> | |
<short-name>experiment</short-name> | |
<namespace>https://github.com/usnistgov/metaschema/issues/548</namespace> | |
<json-base-uri>https://github.com/usnistgov/metaschema/issues/548</json-base-uri> | |
<define-assembly name="package"> | |
<root-name>outer-package</root-name> | |
<define-flag name="id" as-type="positiveInteger"/> | |
<model> | |
<define-field name="color" as-type="string" min-occurs="1" max-occurs="1"/> | |
<define-field name="height" as-type="positive-integer"/> | |
<define-field name="width" as-type="positive-integer"/> | |
<define-field name="depth" as-type="positive-integer" /> | |
<assembly ref="package" max-occurs="unbounded"> | |
<use-name>inner-package</use-name> | |
<group-as name="inner-packages" in-json="ARRAY"/> | |
</assembly> | |
</model> | |
<constraint> | |
<let var="all-approved-colors" expression="('red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet')"/> | |
<let var="inner-approved-colors" expression="('blue', 'indigo', 'violet')"/> | |
<expect target="color" test=".=('red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet')"/> | |
<expect target="inner-package/color" test=".=('blue', 'indigo', 'violet')"/> | |
</constraint> | |
</define-assembly> | |
</METASCHEMA> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<?xml-model href="https://raw.githubusercontent.com/usnistgov/metaschema/develop/schema/xml/metaschema.xsd" type="application/xml" schematypens="http://www.w3.org/2001/XMLSchema"?> | |
<METASCHEMA xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xmlns="http://csrc.nist.gov/ns/oscal/metaschema/1.0"> | |
<schema-name>Let Experiment Model</schema-name> | |
<schema-version>0.2.0</schema-version> | |
<short-name>experiment</short-name> | |
<namespace>https://github.com/usnistgov/metaschema/issues/548</namespace> | |
<json-base-uri>https://github.com/usnistgov/metaschema/issues/548</json-base-uri> | |
<define-assembly name="package"> | |
<root-name>outer-package</root-name> | |
<define-flag name="id" as-type="positiveInteger"/> | |
<model> | |
<define-field name="color" as-type="string" min-occurs="1" max-occurs="1"/> | |
<define-field name="height" as-type="positive-integer"/> | |
<define-field name="width" as-type="positive-integer"/> | |
<define-field name="depth" as-type="positive-integer" /> | |
<assembly ref="package" max-occurs="unbounded"> | |
<use-name>inner-package</use-name> | |
<group-as name="inner-packages" in-json="ARRAY"/> | |
</assembly> | |
</model> | |
<!-- | |
Moved to external constraints in let_example-1_external-constraints.xml | |
--> | |
</define-assembly> | |
</METASCHEMA> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<?xml-model href="https://raw.githubusercontent.com/usnistgov/metaschema/develop/schema/xml/metaschema-meta-constraints.xsd" type="application/xml" schematypens="http://www.w3.org/2001/XMLSchema"?> | |
<metaschema-meta-constraints xmlns="http://csrc.nist.gov/ns/oscal/metaschema/1.0"> | |
<import href="let_example-1.xml" /> | |
<context> | |
<metapath target="/outer-package,//inner-package" /> | |
<constraints> | |
<let var="inner-volume" expression="sum(for $package in inner-package return $package/height * $package/width * $package/depth)"/> | |
<let var="volume" expression="depth * width * height"/> | |
<expect target="." test="$volume > $inner-volume"/> | |
<expect target="." test="false()"> | |
<message>volume: {$volume} inner-volume: {$inner-volume}</message> | |
</expect> | |
</constraints> | |
</context> | |
<context> | |
<metapath target="/outer-package" /> | |
<constraints> | |
<let var="all-approved-colors" expression="('red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet')"/> | |
<expect target="color" test=".=$all-approved-colors"/> | |
</constraints> | |
<context> | |
<metapath target="inner-package" /> | |
<constraints> | |
<let var="inner-approved-colors" expression="('blue', 'indigo', 'violet')"/> | |
<expect target="color" test=".=$inner-approved-colors"/> | |
</constraints> | |
</context> | |
</context> | |
</metaschema-meta-constraints> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"outer-package": | |
{ | |
"color": "red", | |
"height": 10, | |
"width": 10, | |
"depth": 10, | |
"inner-packages": [ | |
{ | |
"color": "violet", | |
"height": 100, | |
"width": 100, | |
"depth": 100 | |
}, | |
{ | |
"color": "periwinkle", | |
"height": 200, | |
"width": 200, | |
"depth": 200 | |
}, | |
{ | |
"color": "mauve", | |
"height": 500, | |
"width": 500, | |
"depth": 500 | |
} | |
] | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"outer-package": | |
{ | |
"color": "red", | |
"height": 10, | |
"width": 10, | |
"depth": 10, | |
"inner-packages": [ | |
{ | |
"color": "violet", | |
"height": 5, | |
"width": 5, | |
"depth": 5 | |
} | |
] | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment