diff --git a/src/metaschema/oscal_control-common_metaschema.xml b/src/metaschema/oscal_control-common_metaschema.xml index 1f3443fc8e..09d9a7cac3 100644 --- a/src/metaschema/oscal_control-common_metaschema.xml +++ b/src/metaschema/oscal_control-common_metaschema.xml @@ -73,7 +73,16 @@ &allowed-values-control-group-property-name; - +

A part provides for logical partitioning of prose, and can be thought of as a grouping structure (e.g., section). A part can have child parts allowing for arbitrary nesting of prose content (e.g., statement hierarchy). A part can contain prop objects that allow for enriching prose text with structured name/value information.

A part can be assigned an optional id, which allows for internal and external references to the textual concept contained within a part. A id provides a means for an OSCAL profile, or a higher layer OSCAL model to reference a specific part within a catalog. For example, an id can be used to reference or to make modifications to a control statement in a profile.

diff --git a/src/metaschema/oscal_profile_metaschema.xml b/src/metaschema/oscal_profile_metaschema.xml index 7bc0733640..179e0c8fb6 100644 --- a/src/metaschema/oscal_profile_metaschema.xml +++ b/src/metaschema/oscal_profile_metaschema.xml @@ -123,7 +123,7 @@ As-Is Structuring Directive An As-is element indicates that the controls should be structured in resolution as they are structured in their source catalogs. It does not contain any elements or attributes. - + Custom grouping A Custom element frames a structure for embedding represented controls in resolution. diff --git a/src/release/content-upgrade/json-prop-to-props.xsl b/src/release/content-upgrade/json-prop-to-props.xsl new file mode 100644 index 0000000000..d986a18aa1 --- /dev/null +++ b/src/release/content-upgrade/json-prop-to-props.xsl @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/specifications/profile-resolution/.gitignore b/src/specifications/profile-resolution/.gitignore new file mode 100644 index 0000000000..c3dbbe3538 --- /dev/null +++ b/src/specifications/profile-resolution/.gitignore @@ -0,0 +1,2 @@ +!oscal-specs_share.xpr +requirement-tests/output-actual/ \ No newline at end of file diff --git a/src/specifications/profile-resolution/example-set.xspec b/src/specifications/profile-resolution/example-set.xspec new file mode 100644 index 0000000000..3a9945b3b0 --- /dev/null +++ b/src/specifications/profile-resolution/example-set.xspec @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/specifications/profile-resolution/lib/build-examples-xspec.xsl b/src/specifications/profile-resolution/lib/build-examples-xspec.xsl new file mode 100644 index 0000000000..68ea425445 --- /dev/null +++ b/src/specifications/profile-resolution/lib/build-examples-xspec.xsl @@ -0,0 +1,111 @@ + + + + + + + + + + autogenerated { current-dateTime() } following model in example-set.xspec + href="lib/xspec-test-dev.sch" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron" + type="text/css" href="lib/xspec-oxygen.css" + { replace(document-uri(/),'.*/','') } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + | + + + + + + + + + + + + + + + + + + + + + + + + + + + + [spec] + + + + + + + + + + + + + + { $req-id} + + + + + + + [Section {@rid}] + + diff --git a/src/specifications/profile-resolution/lib/build-reqs-xspec.xsl b/src/specifications/profile-resolution/lib/build-reqs-xspec.xsl new file mode 100644 index 0000000000..f4aaa279fb --- /dev/null +++ b/src/specifications/profile-resolution/lib/build-reqs-xspec.xsl @@ -0,0 +1,94 @@ + + + + + + + + autogenerated { current-dateTime() } following model in example-set.xspec + href="lib/xspec-test-dev.sch" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron" + type="text/css" href="lib/xspec-oxygen.css" + { replace(document-uri(/),'.*/','') } + + + + + + + + + + + + + + + + + + + + + | + + + + + + + + + + + + + + + + + + + + [dev] + + + + + + + + + + { replace(.,'^PENDING:?\s*','') } + + + + Example { $basename }.xml - {.} + { ancestor::req[1]/@id } + + + + + + + + + + [Section {@rid}] + + diff --git a/src/specifications/profile-resolution/lib/build-testharness.xsl b/src/specifications/profile-resolution/lib/build-testharness.xsl new file mode 100644 index 0000000000..6564fb9b40 --- /dev/null +++ b/src/specifications/profile-resolution/lib/build-testharness.xsl @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [Section {@rid}] + + diff --git a/src/specifications/profile-resolution/lib/build-xspec.xsl b/src/specifications/profile-resolution/lib/build-xspec.xsl new file mode 100644 index 0000000000..c3468468c1 --- /dev/null +++ b/src/specifications/profile-resolution/lib/build-xspec.xsl @@ -0,0 +1,111 @@ + + + + + + + + + + autogenerated { current-dateTime() } following model in example-set.xspec + href="lib/xspec-test-dev.sch" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron" + type="text/css" href="lib/xspec-oxygen.css" + { replace(document-uri(/),'.*/','') } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + | + + + + + + + + + + + + + requirement-tests/{$filename} + + + + + + + { @id } + + + + + + + + [Section {@rid}] + + diff --git a/src/specifications/profile-resolution/html-to-specml.xsl b/src/specifications/profile-resolution/lib/html-to-specml.xsl similarity index 100% rename from src/specifications/profile-resolution/html-to-specml.xsl rename to src/specifications/profile-resolution/lib/html-to-specml.xsl diff --git a/src/specifications/profile-resolution/lib/illustrate-resolution.xsl b/src/specifications/profile-resolution/lib/illustrate-resolution.xsl new file mode 100644 index 0000000000..9eccf19845 --- /dev/null +++ b/src/specifications/profile-resolution/lib/illustrate-resolution.xsl @@ -0,0 +1,331 @@ + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+
+ +
+ + +
+ + + + + + + + + + + + + + + + + + + + + +

In { name(child::*) } { $href }

+
+ +
+
+
+ +
No document found at { $href }
+
+
+ + +
+ + + +

Importing { @href }

+
+ + + + + + + +

Profile { document-uri(/) => replace('.*/','') }

+
+ +
+
+ + + { /document-uri(.) } + { $where => replace('.+/','') => replace('\.xml$','_RESOLVED.xml') } + output-expected/{ $resolvedname } +

Result { $resultpath }

+
+ +
+
+ + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+ + +
+
+
+ + + +
+ +
+
+
+ + + +
+ +
+
+
+ + + +
+ +
+
+
+ + + +
+ +
+
+
+ + + +
+ +
+
+
+ + + + +

{ name() }

+
+ + +

{ name() }

+
+ + +

+ import + + + +

+
+ + + + + + + +

with-id { . }

+
+ + +

set-parameter { @param-id }

+
+ + +

alter { @control-id }

+
+ + +

{ local-name() } { @id }

+
+ + +

{ local-name() } { @id }

+
+ + +

resource { @uuid }

+
+ + +

insert { @type } { @id-ref }

+
+ + +

combine { @method }

+
+ + +

{ local-name() } { . }

+
+ + + + ID_{ parent::*/(@id,@param-id)[1] }-{ local-name(.) } +

{ local-name() } { . }

+
+ + +

rlink { @href }

+
+ + +

title

+
+ + +

{ local-name(.) } { @name } { @id } { [1 to count(child::*) ] ! '▮' }

+
+ + + +

{ local-name(.) } { @name }{ @value }

+
+ + +

{ local-name() } { (1 to count(child::*)) ! '▮' }

+
+ + +
+

with child controls { . }

+
+
+ + +
+

{ replace(local-name(.),'\-',' ') } { . }

+
+
+ + + + + + + +
\ No newline at end of file diff --git a/src/specifications/profile-resolution/lib/oscal-expected.sch b/src/specifications/profile-resolution/lib/oscal-expected.sch new file mode 100644 index 0000000000..719b7fa7d7 --- /dev/null +++ b/src/specifications/profile-resolution/lib/oscal-expected.sch @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + Link corresponds to no resource in this document. + + + + Resource has no links. + + + + \ No newline at end of file diff --git a/src/specifications/profile-resolution/lib/oscal-profile-test-helper.xsl b/src/specifications/profile-resolution/lib/oscal-profile-test-helper.xsl new file mode 100644 index 0000000000..44eb91412b --- /dev/null +++ b/src/specifications/profile-resolution/lib/oscal-profile-test-helper.xsl @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ... + + + + ... + + + + ... + + + + ... + + + + + + + + + + + + diff --git a/src/specifications/profile-resolution/lib/reqs-md-punchlist.xsl b/src/specifications/profile-resolution/lib/reqs-md-punchlist.xsl new file mode 100644 index 0000000000..327b870b08 --- /dev/null +++ b/src/specifications/profile-resolution/lib/reqs-md-punchlist.xsl @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + - [{ if (eg/@href != '') then 'x' else ' ' }] + + + + + [test { @href ! ('`' || . || '`')} + + ] + + + `{.}` + + + + + + `{ @id }` + + + + + + + + + + + + + * + + + + * + + + + + + + + + { replace(.,'\s+',' ') } + + + + [Section {@rid}] + + + diff --git a/src/specifications/profile-resolution/lib/spec-checkup.sch b/src/specifications/profile-resolution/lib/spec-checkup.sch new file mode 100644 index 0000000000..955268021f --- /dev/null +++ b/src/specifications/profile-resolution/lib/spec-checkup.sch @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + section is too deep + + + + + + + + + + Requirement id '' is not distinct + No test is given for requirement "" + Requirement marked 'pending' + + + + + + + Requirement id '' is not found in specification + Requirement has no testing indicated + + + + + + + + + + + or + , + + + + + + + + + + + + + + and + , + + + + + + + + diff --git a/src/specifications/profile-resolution/specml-html-hugo-uswds.xsl b/src/specifications/profile-resolution/lib/specml-html-hugo-uswds.xsl similarity index 97% rename from src/specifications/profile-resolution/specml-html-hugo-uswds.xsl rename to src/specifications/profile-resolution/lib/specml-html-hugo-uswds.xsl index f02f0a2799..68a2eb8d7c 100644 --- a/src/specifications/profile-resolution/specml-html-hugo-uswds.xsl +++ b/src/specifications/profile-resolution/lib/specml-html-hugo-uswds.xsl @@ -28,6 +28,7 @@ + diff --git a/src/specifications/profile-resolution/specml-html-preview.xsl b/src/specifications/profile-resolution/lib/specml-html-preview.xsl similarity index 64% rename from src/specifications/profile-resolution/specml-html-preview.xsl rename to src/specifications/profile-resolution/lib/specml-html-preview.xsl index c98065bec8..b7bab0f301 100644 --- a/src/specifications/profile-resolution/specml-html-preview.xsl +++ b/src/specifications/profile-resolution/lib/specml-html-preview.xsl @@ -24,10 +24,16 @@ - +
@@ -43,14 +49,25 @@ body {{ line-height: 140%; font-family: "Cambria", serif }} * {{ box-sizing: border-box }} -aside.toc {{ position: fixed; overflow-y: scroll; max-width: 36%; top: 1em; bottom: 0px; font-family: { $display-font } }} +aside.navpanel {{ position: fixed; overflow-y: scroll; max-width: 36%; top: 1em; bottom: 0px; font-family: { $display-font } }} + +aside.navpanel div.rqrmts * {{ margin: 0em }} + +.req {{ background-color: pink; padding: 0.2em; font-size: 110%; margin-top: 0.2em !important }} +div.rqrmts .req {{ font-size: 90%; border-top: thin solid red; border-bottom: thin solid red }} +.req.should {{ background-color: peachpuff; border-top: thin solid orange; border-bottom: thin solid orange }} +.req.may {{ background-color: cornsilk; border-top: thin solid gold; border-bottom: thin solid gold }} +.req.recommended {{ background-color: mintcream; border-top: thin solid blue; border-bottom: thin solid blue }} + +span.reqlabel {{ background-color: mintcream; color: forestgreen; margin-right: 0.4em; padding: 0.1em; border: thin solid green }} + .toc ul {{ list-style: none; padding-left: 1em }} main {{ margin-left: 40%; max-width: 48em }} details {{ margin-top: 1.5em }} -details details {{ margin-left: 2em; border-left: thin solid black; padding-left: 1em }} +details details {{ border-left: thin solid black; padding-left: 1em }} summary > * {{ display: inline }} @@ -69,6 +86,8 @@ a {{ color: inherit }} a.linked {{ color: inherit }} .toc a {{ text-decoration: none }} +span.req {{ color: royalblue }} +span.req:hover {{ background-color: beige }} .example {{ padding: 0.5em; border: thin dotted black; margin-top: 1em }} .example > *:first-child {{ margin-top: 0em }} @@ -85,7 +104,52 @@ a.linked {{ color: inherit }} + + + + + + + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + +

+ + + + + + +

+
+
    @@ -111,10 +175,14 @@ a.linked {{ color: inherit }} - + + + + + @@ -151,7 +219,6 @@ a.linked {{ color: inherit }}

    Source (profile):

    -

    Intermediate (catalog):

    diff --git a/src/specifications/profile-resolution/specml-html-static.xsl b/src/specifications/profile-resolution/lib/specml-html-static.xsl similarity index 100% rename from src/specifications/profile-resolution/specml-html-static.xsl rename to src/specifications/profile-resolution/lib/specml-html-static.xsl diff --git a/src/specifications/profile-resolution/specml-html-xslt1.xsl b/src/specifications/profile-resolution/lib/specml-html-xslt1.xsl similarity index 78% rename from src/specifications/profile-resolution/specml-html-xslt1.xsl rename to src/specifications/profile-resolution/lib/specml-html-xslt1.xsl index 3228178bdf..f723843d53 100644 --- a/src/specifications/profile-resolution/specml-html-xslt1.xsl +++ b/src/specifications/profile-resolution/lib/specml-html-xslt1.xsl @@ -23,44 +23,74 @@ + + + sec- + + -head + + + + + + div- + + -head + + + + + + head- + + + + -

    +

    +

    -

    +

    +

    -

    +

    +

    -

    +

    +

    -

    +

    +

    -
    +
    +
    -
    +
    +
    diff --git a/src/specifications/profile-resolution/specml-html-xslt3.xsl b/src/specifications/profile-resolution/lib/specml-html-xslt3.xsl similarity index 100% rename from src/specifications/profile-resolution/specml-html-xslt3.xsl rename to src/specifications/profile-resolution/lib/specml-html-xslt3.xsl diff --git a/src/specifications/profile-resolution/lib/specml-tidy-config.xml b/src/specifications/profile-resolution/lib/specml-tidy-config.xml new file mode 100644 index 0000000000..672af71c06 --- /dev/null +++ b/src/specifications/profile-resolution/lib/specml-tidy-config.xml @@ -0,0 +1,9 @@ + + + Basic whitespace cleanup + + + +
    +

    Importing catalogs/abc-mixed-up_catalog.xml

    +

    In catalog catalogs/abc-mixed-up_catalog.xml

    +
    +
    + +
    +

    catalog

    +
    +
    +
    + +
    +

    group

    +
    +
    +

    title Group B of C

    +
    +
    +
    +
    +
    + +
    +

    control b2

    +
    +
    +

    title Control B2

    +
    +
    +
    +
    +
    +
    +

    part statementb2-stmt

    +
    +
    +
    +
    + +
    +

    control b1

    +
    +
    +

    title Control B1

    +
    +
    +
    +
    +
    +
    +

    part statementb1-stmt

    +
    +
    +
    +
    + +
    +

    control b3

    +
    +
    +

    title Control B3

    +
    +
    +
    +
    +
    +
    +

    part statementb3-stmt

    +
    +
    +
    +
    +
    + +
    +

    group

    +
    +
    +

    title Group A of C

    +
    +
    +
    +
    +
    + +
    +

    control a3

    +
    +
    +

    title Control A3

    +
    +
    +
    +
    +
    +
    +

    param a3_prm1

    +
    +
    +

    label A3 Parameter 1

    +
    +
    +
    +
    +
    +
    +

    part statementa3-stmt

    +
    +
    +
    +
    + +
    +

    control a2

    +
    +
    +

    title Control A2

    +
    +
    +
    +
    +
    +
    +

    part statementa2-stmt

    +
    +
    +
    +
    + +
    +

    control a1

    +
    +
    +

    title Control A1

    +
    +
    +
    +
    +
    +
    +

    param a1_prm1

    +
    +
    +

    label A1 Parameter 1

    +
    +
    +
    +
    +
    +
    +

    part statementa1-stmt

    +
    +
    +
    +
    +
    + +
    +

    group

    +
    +
    +

    title Group C of C

    +
    +
    +
    +
    +
    + +
    +

    control c3

    +
    +
    +

    title Control C3

    +
    +
    +
    +
    +
    +
    +

    part statementc3-stmt

    +
    +
    +
    + +
    +

    control c3.a

    +
    +
    +

    title Control C3-A

    +
    +
    +
    +
    +
    +
    +

    part statementc3-stmt

    +
    +
    +
    + +
    +

    control c3.a-1

    +
    +
    +

    title Control C3-A-1

    +
    +
    +
    +
    +
    +
    +

    part statementc3-stmt

    +
    +
    +
    +
    +
    +
    + +
    +

    control c1

    +
    +
    +

    title Control C1

    +
    +
    +
    +
    +
    +
    +

    part statementc1-stmt

    +
    +
    +
    +
    + +
    +

    control c2

    +
    +
    +

    title Control C2

    +
    +
    +
    +
    +
    +
    +

    part statementc2-stmt

    +
    +
    +
    +
    +
    +
    +
    +
    +

    Profile req-include-all-asis.xml

    +
    +
    + +
    +

    profile

    +
    +
    +
    + +
    +

    importcatalogs/abc-mixed-up_catalog.xml

    +
    +
    +
    +
    +

    include-all

    +
    +
    +
    +
    + +
    +

    merge

    +
    +
    +
    +
    +

    as-is true

    +
    +
    +
    +
    +
    +
    +
    +

    Result output-expected/req-include-all-asis_RESOLVED.xml

    +
    +
    + +
    +

    catalog

    +
    +
    +
    + +
    +

    group

    +
    +
    +

    title Group B of C

    +
    +
    +
    +
    +
    + +
    +

    control b2

    +
    +
    +

    title Control B2

    +
    +
    +
    +
    +
    +
    +

    part statementb2-stmt

    +
    +
    +
    +
    + +
    +

    control b1

    +
    +
    +

    title Control B1

    +
    +
    +
    +
    +
    +
    +

    part statementb1-stmt

    +
    +
    +
    +
    + +
    +

    control b3

    +
    +
    +

    title Control B3

    +
    +
    +
    +
    +
    +
    +

    part statementb3-stmt

    +
    +
    +
    +
    +
    + +
    +

    group

    +
    +
    +

    title Group A of C

    +
    +
    +
    +
    +
    + +
    +

    control a3

    +
    +
    +

    title Control A3

    +
    +
    +
    +
    +
    +
    +

    param a3_prm1

    +
    +
    +

    label A3 Parameter 1

    +
    +
    +
    +
    +
    +
    +

    part statementa3-stmt

    +
    +
    +
    +
    + +
    +

    control a2

    +
    +
    +

    title Control A2

    +
    +
    +
    +
    +
    +
    +

    part statementa2-stmt

    +
    +
    +
    +
    + +
    +

    control a1

    +
    +
    +

    title Control A1

    +
    +
    +
    +
    +
    +
    +

    param a1_prm1

    +
    +
    +

    label A1 Parameter 1

    +
    +
    +
    +
    +
    +
    +

    part statementa1-stmt

    +
    +
    +
    +
    +
    + +
    +

    group

    +
    +
    +

    title Group C of C

    +
    +
    +
    +
    +
    + +
    +

    control c3

    +
    +
    +

    title Control C3

    +
    +
    +
    +
    +
    +
    +

    part statementc3-stmt

    +
    +
    +
    + +
    +

    control c3.a

    +
    +
    +

    title Control C3-A

    +
    +
    +
    +
    +
    +
    +

    part statementc3-stmt

    +
    +
    +
    + +
    +

    control c3.a-1

    +
    +
    +

    title Control C3-A-1

    +
    +
    +
    +
    +
    +
    +

    part statementc3-stmt

    +
    +
    +
    +
    +
    +
    + +
    +

    control c1

    +
    +
    +

    title Control C1

    +
    +
    +
    +
    +
    +
    +

    part statementc1-stmt

    +
    +
    +
    +
    + +
    +

    control c2

    +
    +
    +

    title Control C2

    +
    +
    +
    +
    +
    +
    +

    part statementc2-stmt

    +
    +
    +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/src/specifications/profile-resolution/requirement-tests/illustrations/req-include-by-id-view.html b/src/specifications/profile-resolution/requirement-tests/illustrations/req-include-by-id-view.html new file mode 100644 index 0000000000..5e4084d0fd --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/illustrations/req-include-by-id-view.html @@ -0,0 +1,487 @@ + + + + + + + + +
    +

    Importing catalogs/abc-simple_catalog.xml

    +

    In catalog catalogs/abc-simple_catalog.xml

    +
    +
    + +
    +

    catalog

    +
    +
    +
    + +
    +

    group

    +
    +
    +

    title Group A of C

    +
    +
    +
    +
    +
    + +
    +

    control a1

    +
    +
    +

    title Control A1

    +
    +
    +
    +
    +
    +
    +

    param a1_prm1

    +
    +
    +

    label A1 Parameter 1

    +
    +
    +
    +
    +
    +
    +

    part statementa1-stmt

    +
    +
    +
    +
    + +
    +

    control a2

    +
    +
    +

    title Control A2

    +
    +
    +
    +
    +
    +
    +

    part statementa2-stmt

    +
    +
    +
    +
    + +
    +

    control a3

    +
    +
    +

    title Control A3

    +
    +
    +
    +
    +
    +
    +

    param a3_prm1

    +
    +
    +

    label A3 Parameter 1

    +
    +
    +
    +
    +
    +
    +

    part statementa3-stmt

    +
    +
    +
    +
    +
    + +
    +

    group

    +
    +
    +

    title Group B of C

    +
    +
    +
    +
    +
    + +
    +

    control b1

    +
    +
    +

    title Control B1

    +
    +
    +
    +
    +
    +
    +

    part statementb1-stmt

    +
    +
    +
    +
    + +
    +

    control b2

    +
    +
    +

    title Control B2

    +
    +
    +
    +
    +
    +
    +

    part statementb2-stmt

    +
    +
    +
    +
    + +
    +

    control b3

    +
    +
    +

    title Control B3

    +
    +
    +
    +
    +
    +
    +

    part statementb3-stmt

    +
    +
    +
    +
    +
    + +
    +

    group

    +
    +
    +

    title Group C of C

    +
    +
    +
    +
    +
    + +
    +

    control c1

    +
    +
    +

    title Control C1

    +
    +
    +
    +
    +
    +
    +

    part statementc1-stmt

    +
    +
    +
    +
    + +
    +

    control c2

    +
    +
    +

    title Control C2

    +
    +
    +
    +
    +
    +
    +

    part statementc2-stmt

    +
    +
    +
    +
    + +
    +

    control c3

    +
    +
    +

    title Control C3

    +
    +
    +
    +
    +
    +
    +

    part statementc3-stmt

    +
    +
    +
    + +
    +

    control c3.a

    +
    +
    +

    title Control C3-A

    +
    +
    +
    +
    +
    +
    +

    part statementc3-stmt

    +
    +
    +
    + +
    +

    control c3.a-1

    +
    +
    +

    title Control C3-A-1

    +
    +
    +
    +
    +
    +
    +

    part statementc3-stmt

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    Profile req-include-by-id.xml

    +
    +
    + +
    +

    profile

    +
    +
    +
    + +
    +

    importcatalogs/abc-simple_catalog.xml

    +
    +
    +
    + +
    +

    include-controls

    +
    +
    +

    with child controls yes

    +
    +
    +
    +
    +
    +
    +

    with-id a1

    +
    +
    +
    +
    +

    with-id b1

    +
    +
    +
    +
    +

    with-id c1

    +
    +
    +
    +
    +

    with-id c3

    +
    +
    +
    +
    +
    +
    +
    +
    +

    Result output-expected/req-include-by-id_RESOLVED.xml

    +
    +
    + +
    +

    catalog

    +
    +
    +
    + +
    +

    control a1

    +
    +
    +

    title Control A1

    +
    +
    +
    +
    +
    +
    +

    param a1_prm1

    +
    +
    +

    label A1 Parameter 1

    +
    +
    +
    +
    +
    +
    +

    part statementa1-stmt

    +
    +
    +
    +
    + +
    +

    control b1

    +
    +
    +

    title Control B1

    +
    +
    +
    +
    +
    +
    +

    part statementb1-stmt

    +
    +
    +
    +
    + +
    +

    control c1

    +
    +
    +

    title Control C1

    +
    +
    +
    +
    +
    +
    +

    part statementc1-stmt

    +
    +
    +
    +
    + +
    +

    control c3

    +
    +
    +

    title Control C3

    +
    +
    +
    +
    +
    +
    +

    part statementc3-stmt

    +
    +
    +
    + +
    +

    control c3.a

    +
    +
    +

    title Control C3-A

    +
    +
    +
    +
    +
    +
    +

    part statementc3-stmt

    +
    +
    +
    + +
    +

    control c3.a-1

    +
    +
    +

    title Control C3-A-1

    +
    +
    +
    +
    +
    +
    +

    part statementc3-stmt

    +
    +
    +
    +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/src/specifications/profile-resolution/requirement-tests/keep-everything-twice.xml b/src/specifications/profile-resolution/requirement-tests/keep-everything-twice.xml new file mode 100644 index 0000000000..7452b3f9f4 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/keep-everything-twice.xml @@ -0,0 +1,17 @@ + + + + + Test Profile + 2022-02-14T17:44:59.245623-05:00 + 1.0 + 1.0.0 + + + + + + + + diff --git a/src/specifications/profile-resolution/requirement-tests/output-actual/req-include-all-asis_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-actual/req-include-all-asis_RESOLVED.xml new file mode 100644 index 0000000000..4be608d978 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-actual/req-include-all-asis_RESOLVED.xml @@ -0,0 +1,106 @@ + + + + Test Profile + 2022-06-14T16:44:05.310572-04:00 + 1.0 + TODO: Not implemented yet + + + + + Group B of C + + Control B2 + + +

    B2 bbb bbbbbbbbbbb bbbbbbbbbbbb.

    +
    +
    + + Control B1 + + +

    B1 bbbb bbbbbbb.

    +
    +
    + + Control B3 + + +

    B3 bbbb bbbbbbb bbbb.

    +
    +
    +
    + + Group A of C + + Control A3 + + + + + +

    A3 aaaaa aaaaaaaaaa

    +
    +
    + + Control A2 + + +

    A2 aaa aaaaaaaaaa aaaaaaaaaaaaa

    +
    +
    + + Control A1 + + + + + +

    A1 aaaaa aaaaaaaaaa

    +
    +
    +
    + + Group C of C + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    + + Control C3-A-1 + + +

    C3 A-1 ccccc cccccccccccccc.

    +
    +
    +
    +
    + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +
    +
    + + Control C2 + + +

    C2 cccccccc ccccccccccccccccc.

    +
    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-actual/req-include-all-flat_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-actual/req-include-all-flat_RESOLVED.xml new file mode 100644 index 0000000000..d9e8500563 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-actual/req-include-all-flat_RESOLVED.xml @@ -0,0 +1,94 @@ + + + + Test Profile + 2022-04-18T15:24:19.2090219-04:00 + 1.0 + 1.0.0 + + + + Control B2 + + +

    B2 bbb bbbbbbbbbbb bbbbbbbbbbbb.

    +
    +
    + + Control B1 + + +

    B1 bbbb bbbbbbb.

    +
    +
    + + Control B3 + + +

    B3 bbbb bbbbbbb bbbb.

    +
    +
    + + Control A3 + + + + + +

    A3 aaaaa aaaaaaaaaa

    +
    +
    + + Control A2 + + +

    A2 aaa aaaaaaaaaa aaaaaaaaaaaaa

    +
    +
    + + Control A1 + + + + + +

    A1 aaaaa aaaaaaaaaa

    +
    +
    + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    + + Control C3-A-1 + + +

    C3 A-1 ccccc cccccccccccccc.

    +
    +
    +
    +
    + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +
    +
    + + Control C2 + + +

    C2 cccccccc ccccccccccccccccc.

    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/keep-everything-twice_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/keep-everything-twice_RESOLVED.xml new file mode 100644 index 0000000000..7f603bcf77 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/keep-everything-twice_RESOLVED.xml @@ -0,0 +1,178 @@ + + + + Test Profile + 2022-04-25T16:32:27.0669689-04:00 + 1.0 + 1.0.0 + + + + + Control B2 + + +

    B2 bbb bbbbbbbbbbb bbbbbbbbbbbb.

    +
    +
    + + Control B1 + + +

    B1 bbbb bbbbbbb.

    +
    +
    + + Control B3 + + +

    B3 bbbb bbbbbbb bbbb.

    +
    +
    + + Control A3 + + + + + +

    A3 aaaaa aaaaaaaaaa

    +
    +
    + + Control A2 + + +

    A2 aaa aaaaaaaaaa aaaaaaaaaaaaa

    +
    +
    + + Control A1 + + + + + +

    A1 aaaaa aaaaaaaaaa

    +
    +
    + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    + + Control C3-A-1 + + +

    C3 A-1 ccccc cccccccccccccc.

    +
    +
    +
    +
    + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +
    +
    + + Control C2 + + +

    C2 cccccccc ccccccccccccccccc.

    +
    +
    + + Control B2 + + +

    B2 bbb bbbbbbbbbbb bbbbbbbbbbbb.

    +
    +
    + + Control B1 + + +

    B1 bbbb bbbbbbb.

    +
    +
    + + Control B3 + + +

    B3 bbbb bbbbbbb bbbb.

    +
    +
    + + Control A3 + + + + + +

    A3 aaaaa aaaaaaaaaa

    +
    +
    + + Control A2 + + +

    A2 aaa aaaaaaaaaa aaaaaaaaaaaaa

    +
    +
    + + Control A1 + + + + + +

    A1 aaaaa aaaaaaaaaa

    +
    +
    + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    + + Control C3-A-1 + + +

    C3 A-1 ccccc cccccccccccccc.

    +
    +
    +
    +
    + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +
    +
    + + Control C2 + + +

    C2 cccccccc ccccccccccccccccc.

    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-chained-all-asis_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-chained-all-asis_RESOLVED.xml new file mode 100644 index 0000000000..5e00340e8a --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-chained-all-asis_RESOLVED.xml @@ -0,0 +1,104 @@ + + + + Test Profile + 2022-04-18T15:24:15.880015-04:00 + 1.0 + 1.0.0 + + + + + Group B of C + + Control B2 + + +

    B2 bbb bbbbbbbbbbb bbbbbbbbbbbb.

    +
    +
    + + Control B1 + + +

    B1 bbbb bbbbbbb.

    +
    +
    + + Control B3 + + +

    B3 bbbb bbbbbbb bbbb.

    +
    +
    +
    + + Group A of C + + Control A3 + + + + + +

    A3 aaaaa aaaaaaaaaa

    +
    +
    + + Control A2 + + +

    A2 aaa aaaaaaaaaa aaaaaaaaaaaaa

    +
    +
    + + Control A1 + + + + + +

    A1 aaaaa aaaaaaaaaa

    +
    +
    +
    + + Group C of C + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    + + Control C3-A-1 + + +

    C3 A-1 ccccc cccccccccccccc.

    +
    +
    +
    +
    + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +
    +
    + + Control C2 + + +

    C2 cccccccc ccccccccccccccccc.

    +
    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-chained-deepA_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-chained-deepA_RESOLVED.xml new file mode 100644 index 0000000000..8c843136a6 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-chained-deepA_RESOLVED.xml @@ -0,0 +1,81 @@ + + + + Test Profile + 2022-04-25T15:47:00.2942155-04:00 + 1.0 + 1.0.0 + + + + Group B of C + + Control B1 + + +

    B1 bbbb bbbbbbb.

    +
    +
    + + Control B3 + + +

    B3 bbbb bbbbbbb bbbb.

    +
    +
    +
    + + Group A of C + + Control A3 + + + + + +

    A3 aaaaa aaaaaaaaaa

    +
    +
    + + Control A1 + + + + + +

    A1 aaaaa aaaaaaaaaa

    +
    +
    +
    + + Group C of C + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    + + Control C3-A-1 + + +

    C3 A-1 ccccc cccccccccccccc.

    +
    +
    +
    +
    + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +
    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-circular_import_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-circular_import_RESOLVED.xml new file mode 100644 index 0000000000..90d7c81aef --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-circular_import_RESOLVED.xml @@ -0,0 +1,12 @@ + + + + Test Profile + 2022-04-18T15:24:16.5210188-04:00 + 1.0 + 1.0.0 + + + Import of href="req-circular_importer.xml" fails - circular import + diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-import-by-resource_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-import-by-resource_RESOLVED.xml new file mode 100644 index 0000000000..5764fb3933 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-import-by-resource_RESOLVED.xml @@ -0,0 +1,103 @@ + + + + Test Profile + 2022-04-18T15:24:17.90803-04:00 + 1.0 + 1.0.0 + + + + Group B of C + + Control B2 + + +

    B2 bbb bbbbbbbbbbb bbbbbbbbbbbb.

    +
    +
    + + Control B1 + + +

    B1 bbbb bbbbbbb.

    +
    +
    + + Control B3 + + +

    B3 bbbb bbbbbbb bbbb.

    +
    +
    +
    + + Group A of C + + Control A3 + + + + + +

    A3 aaaaa aaaaaaaaaa

    +
    +
    + + Control A2 + + +

    A2 aaa aaaaaaaaaa aaaaaaaaaaaaa

    +
    +
    + + Control A1 + + + + + +

    A1 aaaaa aaaaaaaaaa

    +
    +
    +
    + + Group C of C + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    + + Control C3-A-1 + + +

    C3 A-1 ccccc cccccccccccccc.

    +
    +
    +
    +
    + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +
    +
    + + Control C2 + + +

    C2 cccccccc ccccccccccccccccc.

    +
    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-all-asis_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-all-asis_RESOLVED.xml new file mode 100644 index 0000000000..d618bc1891 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-all-asis_RESOLVED.xml @@ -0,0 +1,103 @@ + + + + Test Profile + 2022-02-15T13:27:39.019088-05:00 + 1.0 + 1.0.0 + + + + Group B of C + + Control B2 + + +

    B2 bbb bbbbbbbbbbb bbbbbbbbbbbb.

    +
    +
    + + Control B1 + + +

    B1 bbbb bbbbbbb.

    +
    +
    + + Control B3 + + +

    B3 bbbb bbbbbbb bbbb.

    +
    +
    +
    + + Group A of C + + Control A3 + + + + + +

    A3 aaaaa aaaaaaaaaa

    +
    +
    + + Control A2 + + +

    A2 aaa aaaaaaaaaa aaaaaaaaaaaaa

    +
    +
    + + Control A1 + + + + + +

    A1 aaaaa aaaaaaaaaa

    +
    +
    +
    + + Group C of C + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    + + Control C3-A-1 + + +

    C3 A-1 ccccc cccccccccccccc.

    +
    +
    +
    +
    + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +
    +
    + + Control C2 + + +

    C2 cccccccc ccccccccccccccccc.

    +
    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-all-flat_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-all-flat_RESOLVED.xml new file mode 100644 index 0000000000..0b2ae6a52d --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-all-flat_RESOLVED.xml @@ -0,0 +1,94 @@ + + + + Test Profile + 2022-02-15T16:39:33.396588-05:00 + 1.0 + 1.0.0 + + + + Control B2 + + +

    B2 bbb bbbbbbbbbbb bbbbbbbbbbbb.

    +
    +
    + + Control B1 + + +

    B1 bbbb bbbbbbb.

    +
    +
    + + Control B3 + + +

    B3 bbbb bbbbbbb bbbb.

    +
    +
    + + Control A3 + + + + + +

    A3 aaaaa aaaaaaaaaa

    +
    +
    + + Control A2 + + +

    A2 aaa aaaaaaaaaa aaaaaaaaaaaaa

    +
    +
    + + Control A1 + + + + + +

    A1 aaaaa aaaaaaaaaa

    +
    +
    + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    + + Control C3-A-1 + + +

    C3 A-1 ccccc cccccccccccccc.

    +
    +
    +
    +
    + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +
    +
    + + Control C2 + + +

    C2 cccccccc ccccccccccccccccc.

    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-by-id_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-by-id_RESOLVED.xml new file mode 100644 index 0000000000..d392c4d5d3 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-by-id_RESOLVED.xml @@ -0,0 +1,56 @@ + + + + Test Profile + 2022-04-19T15:51:51.3807658-04:00 + 1.0 + 1.0.0 + + + + Control A1 + + + + + +

    A1 aaaaa aaaaaaaaaa

    +
    +
    + + Control B1 + + +

    B1 bbbb bbbbbbb.

    +
    +
    + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +
    +
    + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    + + Control C3-A-1 + + +

    C3 A-1 ccccc cccccccccccccc.

    +
    +
    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-by-match-empty_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-by-match-empty_RESOLVED.xml new file mode 100644 index 0000000000..519a5c30e3 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-by-match-empty_RESOLVED.xml @@ -0,0 +1,11 @@ + + + + Test Profile + 2022-04-19T16:10:50.306097-04:00 + 1.0 + 1.0.0 + + + diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-by-match_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-by-match_RESOLVED.xml new file mode 100644 index 0000000000..57215dbe01 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-by-match_RESOLVED.xml @@ -0,0 +1,52 @@ + + + + Test Profile + 2022-04-19T16:07:09.7400721-04:00 + 1.0 + 1.0.0 + + + + Control A1 + + + + + +

    A1 aaaaa aaaaaaaaaa

    +
    +
    + + Control A2 + + +

    A2 aaa aaaaaaaaaa aaaaaaaaaaaaa

    +
    +
    + + Control A3 + + + + + +

    A3 aaaaa aaaaaaaaaa

    +
    +
    + + Control B1 + + +

    B1 bbbb bbbbbbb.

    +
    +
    + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-exclude1_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-exclude1_RESOLVED.xml new file mode 100644 index 0000000000..01d7ff07eb --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-exclude1_RESOLVED.xml @@ -0,0 +1,42 @@ + + + + Test Profile + 2022-04-20T11:25:08.5989517-04:00 + 1.0 + 1.0.0 + + + + Control A2 + + +

    A2 aaa aaaaaaaaaa aaaaaaaaaaaaa

    +
    +
    + + Control A3 + + + + + +

    A3 aaaaa aaaaaaaaaa

    +
    +
    + + Control B1 + + +

    B1 bbbb bbbbbbb.

    +
    +
    + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-exclude2_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-exclude2_RESOLVED.xml new file mode 100644 index 0000000000..2611d1817a --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-exclude2_RESOLVED.xml @@ -0,0 +1,28 @@ + + + + Test Profile + 2022-04-20T11:27:11.0114457-04:00 + 1.0 + 1.0.0 + + + + Control A2 + + +

    A2 aaa aaaaaaaaaa aaaaaaaaaaaaa

    +
    +
    + + Control A3 + + + + + +

    A3 aaaaa aaaaaaaaaa

    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-exclude3_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-exclude3_RESOLVED.xml new file mode 100644 index 0000000000..3a26a74414 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-exclude3_RESOLVED.xml @@ -0,0 +1,25 @@ + + + + Test Profile + 2022-04-20T11:29:12.5084741-04:00 + 1.0 + 1.0.0 + + + + Control B2 + + +

    B2 bbb bbbbbbbbbbb bbbbbbbbbbbb.

    +
    +
    + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-exclude4_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-exclude4_RESOLVED.xml new file mode 100644 index 0000000000..31f7820633 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-exclude4_RESOLVED.xml @@ -0,0 +1,25 @@ + + + + Test Profile + 2022-04-25T16:18:40.4891642-04:00 + 1.0 + 1.0.0 + + + + Control B2 + + +

    B2 bbb bbbbbbbbbbb bbbbbbbbbbbb.

    +
    +
    + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-exclude5_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-exclude5_RESOLVED.xml new file mode 100644 index 0000000000..f192200e80 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-include-exclude5_RESOLVED.xml @@ -0,0 +1,25 @@ + + + + Test Profile + 2022-04-25T16:20:19.1426274-04:00 + 1.0 + 1.0.0 + + + + Control B2 + + +

    B2 bbb bbbbbbbbbbb bbbbbbbbbbbb.

    +
    +
    + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-loose-params1_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-loose-params1_RESOLVED.xml new file mode 100644 index 0000000000..73059434a8 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-loose-params1_RESOLVED.xml @@ -0,0 +1,54 @@ + + + + Test Profile + 2022-06-13T13:51:15.3863601-04:00 + 1.0 + TODO: Not implemented yet + + + + + +

    When referenced from anywhere, this should float through.

    + + + +

    If Control C2 is missing, should be floating free.

    + + + Group of Controls + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    + + Control C3-A-1 + + +

    Making reference to a parameter in another control, like this: .

    +
    +
    +
    +
    + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc. +

    +
    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-loose-params2_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-loose-params2_RESOLVED.xml new file mode 100644 index 0000000000..75a0a99b89 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-loose-params2_RESOLVED.xml @@ -0,0 +1,51 @@ + + + + Test Profile + 2022-06-14T10:12:38.6256557-04:00 + 1.0 + TODO: Not implemented yet + + + + + +

    When referenced from anywhere, this should float through.

    + + + +

    If Control C2 is missing, should be floating free.

    + + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    + + Control C3-A-1 + + +

    Making reference to a parameter in another control, like this: .

    +
    +
    +
    +
    + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc. +

    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-merge-usefirst1_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-merge-usefirst1_RESOLVED.xml new file mode 100644 index 0000000000..83e45b7bb5 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-merge-usefirst1_RESOLVED.xml @@ -0,0 +1,94 @@ + + + + Test Profile + 2022-06-13T14:18:05.6425797-04:00 + 1.0 + TODO: Not implemented yet + + + + + Group A of C + + Control A1 + + + + + +

    A1 aaaaa aaaaaaaaaa

    +
    +
    +
    + + Group B of C + + Control B1 + + +

    B1 bbbb bbbbbbb.

    +
    +
    +
    + + Group C of C + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +
    +
    +
    + + Group B of C + + Control B2 + + +

    B2 bbb bbbbbbbbbbb bbbbbbbbbbbb.

    +
    +
    +
    + + Group A of C + + Control A3 + + + + + +

    A3 aaaaa aaaaaaaaaa

    +
    +
    +
    + + Group C of C + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    + + Control C3-A-1 + + +

    C3 A-1 ccccc cccccccccccccc.

    +
    +
    +
    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-merge-usefirst2_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-merge-usefirst2_RESOLVED.xml new file mode 100644 index 0000000000..4e697d24e5 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-merge-usefirst2_RESOLVED.xml @@ -0,0 +1,98 @@ + + + + Test Profile + 2022-06-13T14:20:25.5347906-04:00 + 1.0 + TODO: Not implemented yet + + + + + Control A1 + + + + + +

    A1 aaaaa aaaaaaaaaa

    +
    +
    + + Control A2 + + +

    A2 aaa aaaaaaaaaa aaaaaaaaaaaaa

    +
    +
    + + Control A3 + + + + + +

    A3 aaaaa aaaaaaaaaa

    +
    +
    + + Control B1 + + +

    B1 bbbb bbbbbbb.

    +
    +
    + + Control B2 + + +

    B2 bbb bbbbbbbbbbb bbbbbbbbbbbb.

    +
    +
    + + Control B3 + + +

    B3 bbbb bbbbbbb bbbb.

    +
    +
    + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +
    +
    + + Control C2 + + +

    C2 cccccccc ccccccccccccccccc.

    +
    +
    + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    + + Control C3-A-1 + + +

    C3 A-1 ccccc cccccccccccccc.

    +
    +
    +
    +
    + +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-modify-alter-remove-match1_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-modify-alter-remove-match1_RESOLVED.xml new file mode 100644 index 0000000000..d03e52fe08 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-modify-alter-remove-match1_RESOLVED.xml @@ -0,0 +1,65 @@ + + + + Test Profile + 2022-06-15T10:30:30.4321464-04:00 + 1.0 + TODO: Not implemented yet + + + + + Control A3 + + + + + + Control A2 + + + + Control A1 + + + + +

    A1 aaaaa aaaaaaaaaa

    +
    +
    + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    + + Control C3-A-1 + + +

    C3 A-1 ccccc cccccccccccccc.

    +
    +
    +
    +
    + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +
    +
    + + Control C2 + + +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-modify-alter-remove-match2_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-modify-alter-remove-match2_RESOLVED.xml new file mode 100644 index 0000000000..9ed7b5da62 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-modify-alter-remove-match2_RESOLVED.xml @@ -0,0 +1,77 @@ + + + + Test Profile + 2022-06-15T16:22:58.1586252-04:00 + 1.0 + TODO: Not implemented yet + + + + + + A.a value + + + + + + Control A1 + + + a1.a value + + + +

    A1 aaaaa aaaaaaaaaa

    +

    Parameter A.a is set: +

    +

    Parameter a1.a is set: +

    +
    +
    + + Control A2 + + + + +

    A2 aaa aaaaaaaaaa aaaaaaaaaaaaa

    +

    Parameter A.b is set: +

    +
    +
    + + Control A3 + +

    A3 aaaaa aaaaaaaaaa

    +
    +
    + + Control A4 + + + + + +

    A4 aaaaa aaaaaaaaaa

    +
    +
    + + Control A5 + + + + + +

    A5 aaaaa aaaaaaaaaa

    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-structure-asis1_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-structure-asis1_RESOLVED.xml new file mode 100644 index 0000000000..6ee6467c1d --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-structure-asis1_RESOLVED.xml @@ -0,0 +1,111 @@ + + + + Test Profile + 2022-06-14T10:31:48.9825185-04:00 + 1.0 + TODO: Not implemented yet + + + + + Group A of C + + Control A1 + + + a1.a value + + + +

    A1 aaaaa aaaaaaaaaa

    +

    Parameter A.a is set: +

    +

    Parameter a1.a is set: +

    +
    +
    + + Control A2 + + +

    A2 aaa aaaaaaaaaa aaaaaaaaaaaaa

    +

    Parameter A.b is set: +

    +
    +
    + + Control A3 + + +

    A3 aaaaa aaaaaaaaaa

    +
    +
    +
    + + Group B of C + + Control B1 + + +

    B1 bbbb bbbbbbb.

    +
    +
    + + Control B2 + + + +

    B2 bbb bbbbbbbbbbb bbbbbbbbbbbb.

    +

    Also, we refer to a citation.

    +
    +
    + + Control B3 + + +

    B3 bbbb bbbbbbb bbbb.

    +
    +
    +
    + + Group C of C + +

    Group C of C contains subgroups CA and CB.

    +
    + + Group CA + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +

    We cite a document with an anchor: ... citation ....

    +
    +
    + + Control C2 + + + +

    C2 cccccccc ccccccccccccccccc.

    +
    +
    +
    +
    + + + + A citation to an out of line document. + + + + + A citation to an out of line document. + + + +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-structure-asis2_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-structure-asis2_RESOLVED.xml new file mode 100644 index 0000000000..ea2300e158 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-structure-asis2_RESOLVED.xml @@ -0,0 +1,97 @@ + + + + Test Profile + 2022-06-14T10:33:37.4077081-04:00 + 1.0 + TODO: Not implemented yet + + + + + Group A of C + + Control A1 + + + a1.a value + + + +

    A1 aaaaa aaaaaaaaaa

    +

    Parameter A.a is set: +

    +

    Parameter a1.a is set: +

    +
    +
    + + Control A2 + + +

    A2 aaa aaaaaaaaaa aaaaaaaaaaaaa

    +

    Parameter A.b is set: +

    +
    +
    + + Control A3 + + +

    A3 aaaaa aaaaaaaaaa

    +
    +
    +
    + + Group C of C + +

    Group C of C contains subgroups CA and CB.

    +
    + + Group CA + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +

    We cite a document with an anchor: ... citation ....

    +
    +
    + + Control C2 + + + +

    C2 cccccccc ccccccccccccccccc.

    +
    +
    +
    + + Group CB + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    + + Control C3-A-1 + + +

    C3 A-1 ccccc cccccccccccccc.

    +
    +
    +
    +
    +
    + + + + A citation to an out of line document. + + + +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-with-child-controls-no_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-with-child-controls-no_RESOLVED.xml new file mode 100644 index 0000000000..76b78502ff --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-with-child-controls-no_RESOLVED.xml @@ -0,0 +1,42 @@ + + + + Test Profile + 2022-04-19T16:25:49.1221541-04:00 + 1.0 + 1.0.0 + + + + Control A1 + + + + + +

    A1 aaaaa aaaaaaaaaa

    +
    +
    + + Control B1 + + +

    B1 bbbb bbbbbbb.

    +
    +
    + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +
    +
    + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-with-child-controls-none_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-with-child-controls-none_RESOLVED.xml new file mode 100644 index 0000000000..3d9c352467 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-with-child-controls-none_RESOLVED.xml @@ -0,0 +1,42 @@ + + + + Test Profile + 2022-04-19T16:27:33.9704261-04:00 + 1.0 + 1.0.0 + + + + Control A1 + + + + + +

    A1 aaaaa aaaaaaaaaa

    +
    +
    + + Control B1 + + +

    B1 bbbb bbbbbbb.

    +
    +
    + + Control C1 + + +

    C1 ccccc ccc ccccccccccccccccc.

    +
    +
    + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-with-parent-controls-no1_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-with-parent-controls-no1_RESOLVED.xml new file mode 100644 index 0000000000..5605cb1acb --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-with-parent-controls-no1_RESOLVED.xml @@ -0,0 +1,24 @@ + + + + Test Profile + 2022-04-26T17:10:21.286142-04:00 + 1.0 + 1.0.0 + + + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    + + Control C3-A-1 + + +

    C3 A-1 ccccc cccccccccccccc.

    +
    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-with-parent-controls-none_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-with-parent-controls-none_RESOLVED.xml new file mode 100644 index 0000000000..229f9cabd2 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-with-parent-controls-none_RESOLVED.xml @@ -0,0 +1,25 @@ + + + + Test Profile + 2022-04-26T17:19:59.7102091-04:00 + 1.0 + 1.0.0 + + + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-with-parent-controls-yes1_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-with-parent-controls-yes1_RESOLVED.xml new file mode 100644 index 0000000000..90cd98f27f --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-with-parent-controls-yes1_RESOLVED.xml @@ -0,0 +1,32 @@ + + + + Test Profile + 2022-04-26T17:11:18.9602994-04:00 + 1.0 + 1.0.0 + + + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    + + Control C3-A-1 + + +

    C3 A-1 ccccc cccccccccccccc.

    +
    +
    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/output-expected/req-with-parent-controls-yes2_RESOLVED.xml b/src/specifications/profile-resolution/requirement-tests/output-expected/req-with-parent-controls-yes2_RESOLVED.xml new file mode 100644 index 0000000000..813f9ac4b9 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/output-expected/req-with-parent-controls-yes2_RESOLVED.xml @@ -0,0 +1,25 @@ + + + + Test Profile + 2022-04-26T17:11:18.9602994-04:00 + 1.0 + 1.0.0 + + + + Control C3 + + +

    C3 ccccc cccccccccccccc.

    +
    + + Control C3-A + + +

    C3 A ccccc cccccccccccccc.

    +
    +
    +
    +
    diff --git a/src/specifications/profile-resolution/requirement-tests/req-broken-import.xml b/src/specifications/profile-resolution/requirement-tests/req-broken-import.xml new file mode 100644 index 0000000000..86c6a6cfd8 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-broken-import.xml @@ -0,0 +1,17 @@ + + + + + Test Profile + 2022-02-14T17:44:59.245623-05:00 + 1.0 + 1.0.0 + + + + + + true + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-chained-all-asis.xml b/src/specifications/profile-resolution/requirement-tests/req-chained-all-asis.xml new file mode 100644 index 0000000000..a10fcb9a17 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-chained-all-asis.xml @@ -0,0 +1,18 @@ + + + + + Test Profile + 2022-04-18T15:14:17.679398100-04:00 + 1.0 + 1.0.0 + + + + + + + true + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-chained-deepA.xml b/src/specifications/profile-resolution/requirement-tests/req-chained-deepA.xml new file mode 100644 index 0000000000..bd62a69304 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-chained-deepA.xml @@ -0,0 +1,29 @@ + + + + + Test Profile + 2022-04-18T15:14:17.679398100-04:00 + 1.0 + 1.0.0 + + + + + a1 + b1 + c1 + c3 + + + + + a3 + b3 + + + + true + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-circular_import.xml b/src/specifications/profile-resolution/requirement-tests/req-circular_import.xml new file mode 100644 index 0000000000..ff0a12a7b3 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-circular_import.xml @@ -0,0 +1,17 @@ + + + + + + Test Profile + 2020-05-30T14:39:39.562-04:00 + 1.0 + 1.0.0 + + + + a1 + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-circular_importer.xml b/src/specifications/profile-resolution/requirement-tests/req-circular_importer.xml new file mode 100644 index 0000000000..8e766511ac --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-circular_importer.xml @@ -0,0 +1,17 @@ + + + + + + Test Profile + 2020-05-30T14:39:39.562-04:00 + 1.0 + 1.0.0 + + + + a1 + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-import-by-resource.xml b/src/specifications/profile-resolution/requirement-tests/req-import-by-resource.xml new file mode 100644 index 0000000000..f943f2a5a4 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-import-by-resource.xml @@ -0,0 +1,22 @@ + + + + + Test Profile + 2022-02-14T17:44:59.245623-05:00 + 1.0 + 1.0.0 + + + + + + true + + + + + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-include-all-asis.xml b/src/specifications/profile-resolution/requirement-tests/req-include-all-asis.xml new file mode 100644 index 0000000000..69d1c64cf6 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-include-all-asis.xml @@ -0,0 +1,17 @@ + + + + + Test Profile + 2022-02-14T17:44:59.245623-05:00 + 1.0 + 1.0.0 + + + + + + true + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-include-all-flat.xml b/src/specifications/profile-resolution/requirement-tests/req-include-all-flat.xml new file mode 100644 index 0000000000..0ef0dc3d57 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-include-all-flat.xml @@ -0,0 +1,14 @@ + + + + + Test Profile + 2022-02-15T13:33:09.325121-05:00 + 1.0 + 1.0.0 + + + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-include-by-id.xml b/src/specifications/profile-resolution/requirement-tests/req-include-by-id.xml new file mode 100644 index 0000000000..f6a0a7a1ca --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-include-by-id.xml @@ -0,0 +1,20 @@ + + + + + + Test Profile + 2020-05-30T14:39:45.684-04:00 + 1.0 + 1.0.0 + + + + a1 + b1 + c1 + c3 + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-include-by-match-empty.xml b/src/specifications/profile-resolution/requirement-tests/req-include-by-match-empty.xml new file mode 100644 index 0000000000..2e08675d5a --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-include-by-match-empty.xml @@ -0,0 +1,18 @@ + + + + + + Test Profile + 2020-05-30T14:39:47.217-04:00 + 1.0 + 1.0.0 + + + + + + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-include-by-match.xml b/src/specifications/profile-resolution/requirement-tests/req-include-by-match.xml new file mode 100644 index 0000000000..ae3eebf018 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-include-by-match.xml @@ -0,0 +1,18 @@ + + + + + + Test Profile + 2020-05-30T14:39:47.217-04:00 + 1.0 + 1.0.0 + + + + + + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-include-exclude1.xml b/src/specifications/profile-resolution/requirement-tests/req-include-exclude1.xml new file mode 100644 index 0000000000..16127a2df0 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-include-exclude1.xml @@ -0,0 +1,21 @@ + + + + + + Test Profile + 2020-05-30T14:39:47.217-04:00 + 1.0 + 1.0.0 + + + + + + + + a1 + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-include-exclude2.xml b/src/specifications/profile-resolution/requirement-tests/req-include-exclude2.xml new file mode 100644 index 0000000000..f8bb596091 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-include-exclude2.xml @@ -0,0 +1,20 @@ + + + + + + Test Profile + 2020-05-30T14:39:47.217-04:00 + 1.0 + 1.0.0 + + + + + + + + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-include-exclude3.xml b/src/specifications/profile-resolution/requirement-tests/req-include-exclude3.xml new file mode 100644 index 0000000000..45c32f4187 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-include-exclude3.xml @@ -0,0 +1,22 @@ + + + + + + Test Profile + 2020-05-30T14:39:47.217-04:00 + 1.0 + 1.0.0 + + + + + + + + + + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-include-exclude4.xml b/src/specifications/profile-resolution/requirement-tests/req-include-exclude4.xml new file mode 100644 index 0000000000..ad8bf1a3f3 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-include-exclude4.xml @@ -0,0 +1,22 @@ + + + + + + Test Profile + 2020-05-30T14:39:47.217-04:00 + 1.0 + 1.0.0 + + + + + + + + + + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-include-exclude5.xml b/src/specifications/profile-resolution/requirement-tests/req-include-exclude5.xml new file mode 100644 index 0000000000..55609abb5a --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-include-exclude5.xml @@ -0,0 +1,25 @@ + + + + + + Test Profile + 2020-05-30T14:39:47.217-04:00 + 1.0 + 1.0.0 + + + + + + + + + + + + + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-loose-params1.xml b/src/specifications/profile-resolution/requirement-tests/req-loose-params1.xml new file mode 100644 index 0000000000..9b36f9fea0 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-loose-params1.xml @@ -0,0 +1,20 @@ + + + + + Test Profile + 2022-02-14T17:44:59.245623-05:00 + 1.0 + 1.0.0 + + + + + c2 + + + + true + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-loose-params2.xml b/src/specifications/profile-resolution/requirement-tests/req-loose-params2.xml new file mode 100644 index 0000000000..54098dd455 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-loose-params2.xml @@ -0,0 +1,20 @@ + + + + + Test Profile + 2022-02-14T17:44:59.245623-05:00 + 1.0 + 1.0.0 + + + + + c2 + + + + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-merge-keep1.xml b/src/specifications/profile-resolution/requirement-tests/req-merge-keep1.xml new file mode 100644 index 0000000000..9300226a17 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-merge-keep1.xml @@ -0,0 +1,21 @@ + + + + + Test Profile + 2022-02-14T17:44:59.245623-05:00 + 1.0 + 1.0.0 + + + + + + + + + + true + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-merge-keep2.xml b/src/specifications/profile-resolution/requirement-tests/req-merge-keep2.xml new file mode 100644 index 0000000000..9300226a17 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-merge-keep2.xml @@ -0,0 +1,21 @@ + + + + + Test Profile + 2022-02-14T17:44:59.245623-05:00 + 1.0 + 1.0.0 + + + + + + + + + + true + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-merge-usefirst1.xml b/src/specifications/profile-resolution/requirement-tests/req-merge-usefirst1.xml new file mode 100644 index 0000000000..3eb6817e8f --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-merge-usefirst1.xml @@ -0,0 +1,21 @@ + + + + + Test Profile + 2022-02-14T17:44:59.245623-05:00 + 1.0 + 1.0.0 + + + + + + + + + + true + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-merge-usefirst2.xml b/src/specifications/profile-resolution/requirement-tests/req-merge-usefirst2.xml new file mode 100644 index 0000000000..6ba138bd28 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-merge-usefirst2.xml @@ -0,0 +1,20 @@ + + + + + Test Profile + 2022-02-14T17:44:59.245623-05:00 + 1.0 + 1.0.0 + + + + + + + + + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-missing-resource.xml b/src/specifications/profile-resolution/requirement-tests/req-missing-resource.xml new file mode 100644 index 0000000000..1f4f255edd --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-missing-resource.xml @@ -0,0 +1,22 @@ + + + + + Test Profile + 2022-02-14T17:44:59.245623-05:00 + 1.0 + 1.0.0 + + + + + + true + + + + + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-modify-alter-remove-match1.xml b/src/specifications/profile-resolution/requirement-tests/req-modify-alter-remove-match1.xml new file mode 100644 index 0000000000..ed3296fde0 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-modify-alter-remove-match1.xml @@ -0,0 +1,36 @@ + + + + + Test Profile + 2022-02-15T13:33:09.325121-05:00 + 1.0 + 1.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-modify-alter-remove-match2.xml b/src/specifications/profile-resolution/requirement-tests/req-modify-alter-remove-match2.xml new file mode 100644 index 0000000000..b0c075292f --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-modify-alter-remove-match2.xml @@ -0,0 +1,37 @@ + + + + + Test Profile + 2022-02-15T13:33:09.325121-05:00 + 1.0 + 1.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-spoofing-resource.xml b/src/specifications/profile-resolution/requirement-tests/req-spoofing-resource.xml new file mode 100644 index 0000000000..4261620265 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-spoofing-resource.xml @@ -0,0 +1,22 @@ + + + ]> + + + Test Profile + 2022-02-14T17:44:59.245623-05:00 + 1.0 + 1.0.0 + + + + + + true + + + &spoof; + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-structure-asis1.xml b/src/specifications/profile-resolution/requirement-tests/req-structure-asis1.xml new file mode 100644 index 0000000000..6b504ebadb --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-structure-asis1.xml @@ -0,0 +1,20 @@ + + + + + Test Profile + 2022-02-14T17:44:59.245623-05:00 + 1.0 + 1.0.0 + + + + + c3 + + + + true + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-structure-asis2.xml b/src/specifications/profile-resolution/requirement-tests/req-structure-asis2.xml new file mode 100644 index 0000000000..a485bdb1be --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-structure-asis2.xml @@ -0,0 +1,21 @@ + + + + + Test Profile + 2022-02-14T17:44:59.245623-05:00 + 1.0 + 1.0.0 + + + + + c3 + + + + + true + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-with-child-controls-no.xml b/src/specifications/profile-resolution/requirement-tests/req-with-child-controls-no.xml new file mode 100644 index 0000000000..4223dd4b53 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-with-child-controls-no.xml @@ -0,0 +1,20 @@ + + + + + + Test Profile + 2020-05-30T14:39:45.684-04:00 + 1.0 + 1.0.0 + + + + a1 + b1 + c1 + c3 + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-with-child-controls-none.xml b/src/specifications/profile-resolution/requirement-tests/req-with-child-controls-none.xml new file mode 100644 index 0000000000..3874fd3cb0 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-with-child-controls-none.xml @@ -0,0 +1,20 @@ + + + + + + Test Profile + 2020-05-30T14:39:45.684-04:00 + 1.0 + 1.0.0 + + + + a1 + b1 + c1 + c3 + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-with-parent-controls-no1.xml b/src/specifications/profile-resolution/requirement-tests/req-with-parent-controls-no1.xml new file mode 100644 index 0000000000..6925264970 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-with-parent-controls-no1.xml @@ -0,0 +1,17 @@ + + + + + + Test Profile + 2022-04-26T16:46:04.8198642-04:00 + 1.0 + 1.0.0 + + + + c3 + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-with-parent-controls-none.xml b/src/specifications/profile-resolution/requirement-tests/req-with-parent-controls-none.xml new file mode 100644 index 0000000000..e911c6ef89 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-with-parent-controls-none.xml @@ -0,0 +1,17 @@ + + + + + + Test Profile + 2022-04-26T17:19:08.8113625-04:00 + 1.0 + 1.0.0 + + + + c3.a + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-with-parent-controls-yes1.xml b/src/specifications/profile-resolution/requirement-tests/req-with-parent-controls-yes1.xml new file mode 100644 index 0000000000..eefb32678e --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-with-parent-controls-yes1.xml @@ -0,0 +1,17 @@ + + + + + + Test Profile + 2022-04-26T17:09:44.5371952-04:00 + 1.0 + 1.0.0 + + + + c3.a + + + diff --git a/src/specifications/profile-resolution/requirement-tests/req-with-parent-controls-yes2.xml b/src/specifications/profile-resolution/requirement-tests/req-with-parent-controls-yes2.xml new file mode 100644 index 0000000000..6c73c9c3a5 --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/req-with-parent-controls-yes2.xml @@ -0,0 +1,17 @@ + + + + + + Test Profile + 2022-04-26T17:09:44.5371952-04:00 + 1.0 + 1.0.0 + + + + c3.a + + + diff --git a/src/specifications/profile-resolution/requirement-tests/spoofed-resource.xml b/src/specifications/profile-resolution/requirement-tests/spoofed-resource.xml new file mode 100644 index 0000000000..31b577d67e --- /dev/null +++ b/src/specifications/profile-resolution/requirement-tests/spoofed-resource.xml @@ -0,0 +1,4 @@ + + + + diff --git a/src/specifications/profile-resolution/requirements-extract.xsl b/src/specifications/profile-resolution/requirements-extract.xsl new file mode 100644 index 0000000000..0ae67df614 --- /dev/null +++ b/src/specifications/profile-resolution/requirements-extract.xsl @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + pending + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/specifications/profile-resolution/resolution-testing.xml b/src/specifications/profile-resolution/resolution-testing.xml new file mode 100644 index 0000000000..f6955e9e33 --- /dev/null +++ b/src/specifications/profile-resolution/resolution-testing.xml @@ -0,0 +1,403 @@ + + + + + + + + + It is strongly RECOMMENDED that implementations execute the following steps in the order that they are provided here (import, merge, modify). + PENDING test design + + + Tools MUST resolve URIs by following Section 5 of RFC3986, with the exception of URI Fragments (URIs that start with "#"). URI Fragments MUST instead be resolved as defined in Internal References. + relative URI + + + Tools MUST acquire resources at the resolved URI by following Section 5 of RFC3986, with the exception of URI Fragments (URIs that start with "#"). URI Fragments MUST instead be acquired as defined in Internal References. + via internal reference to resource/rlink + + + For the purposes of resolving URIs using the above specification, the Base URI MUST be considered to be the absolute URI of the containing profile. + URI base corresponds to document URI + + + In the case that acquiring a resource fails, the tool MUST cease processing and provide an error. In order to ensure profile resolution results in the same catalog regardless of which tool resolves it, all imports must successfully resolve. While this may cause inconvenience if resources are frequently not available, it ensures interoperability. + PENDING rebase over latest from galtm missing resource + + + In the context of the Import Phase, internal references will only appear as a reference to a profile or catalog that is in the resources section of the source. When tools encounter such a reference, they MUST locate the object in resources with the matching UUID value, and resolve the resource. By OSCAL model requirements, a given resource can have zero to many rlink objects and zero to one base64 objects; however, it must have at least one of the two present. Tools can assume that any of these each resolves to the same underlying OSCAL object, although potentially in different serialization formats. For deterministic resolution of these backmatter OSCAL objects, tools need to adhere to the following requirements: + + + + Tools MAY use any of the rlink or base64 objects present in the resource. + PENDING test design (support for either/both base64 and rlink) + + + Tools MAY verify that each above objects resolves to the same underlying OSCAL object. If there are OSCAL Model content differences between the resolved objects, the tool SHOULD provide a warning. + PENDING test design (correspondence of base64 and rlink-nominated objects) + + + When a rlink is encountered and is to be resolved, it MUST be resolved by using a HTTP request to retrieve a byte stream. + PENDING test design (retrieval) + + + When a base64 is encountered and is to be resolved, it MUST be considered a Byte Stream. + PENDING test design (base64 integrity) + + + Regardless of its source, the Byte Stream MUST be decoded based on the algorithm defined in Section 4 RFC 4648. + PENDING test design (base64 integrity) + + + If the object fetched cannot be found or is not a valid OSCAL object, the tool MUST cease processing and provide an error. + PENDING rebase over latest from galtm + PENDING rebase over latest from galtm + + + If the resource acquired is an OSCAL Profile, the tool MUST apply this specification to resolve it, then continue processing having imported the resulting catalog. + PENDING chained profiles + + + When a profile imports a profile, the subordinate profile SHOULD be resolved first into a catalog using this specification, before it is imported. + PENDING chained profiles + PENDING [bug repair] chained profile merged with controls from its own source catalog + + + If a processor encounters a circular import as described above (self-imports are inherently circular), the processor MUST cease processing and generate an error. + PENDING circular import detection + + + Note that this occurs even if the same catalog is imported multiple times: each distinct import collects controls into a separate selection + PENDING chained profiles + + + The control inclusions are combined and collapsed in the next phase of processing + PENDING chained profiles + + + When an import provides the include-all directive, ALL controls and groups in the referenced document (including nested controls) MUST be included. + + + + + When an import provides the include-controls directive, with a with-id child, all controls in the referenced document whose id match one of the listed id values MUST be included. + + + + When an import provides the include-controls directive, with a matching child, all controls in the referenced document whose id matches one of the listed pattern values (Glob matching) MUST be included. + + + + If a matching object is provided with no pattern, it MUST be treated as matching nothing. While not providing a pattern is technically valid, resolution tool implementers should be aware that it is generally undesirable, and warnings or notices to the user may be appropriate. + + + + A with-child-controls: yes directive on an include-controls indicates that all descendant controls of the included control MUST also be included. + + + + A with-child-controls: no directive on an include-controls indicates that ONLY the matching control is included, any descendant children MUST NOT be included. + + + + If no with-child-controls is provided, the processor MUST consider the directive as being equivalent to one having with-child-controls:no. + + + + A with-parent-controls: yes directive on an include-controls indicates that all parent controls of the included control MUST also be included. + PR https://github.com/usnistgov/OSCAL/pull/1207 + PR https://github.com/usnistgov/OSCAL/pull/1207 + + + A with-parent-controls: no directive on an include-controls indicates that ONLY the matching control is included, any parent MUST NOT be included. + PENDING PR https://github.com/usnistgov/OSCAL/pull/1207 + + + If no with-parent-controls is provided, the processor MUST consider the directive as being equivalent to one having with-parent-controls:yes. + Neither setting is given + + + Any control designated to be both included and excluded, MUST be excluded. This holds irrespective of the specificity of the selection for inclusion or exclusion. + + + + + + When exclude-controls has at least one with-ids or matching directive, the processor MUST follow the same rules as defined in the relevant sections above for these directives, but exclude instead of include any controls. All optional features (with-child-controls, etc.) also apply to exclusion directives. + + + + A given import may have any number of inclusion statements and any number of exclusion statements. Their effect is cumulative; any control that is included (or excluded) more than once MUST be considered to be included (or excluded) only once. In other words, a given control being included or excluded more than once has no effect. Exclusion still takes priority over inclusion (see above). + + + + All loose params from both imported documents and the profile source MUST be included. These params will be kept in the final output if the document contains any references to them, and discarded otherwise. See Pruning and Ordering. + + + + It is RECOMMENDED that tools apply the "combine" directive to the intermediate generated by the Import phase first, then apply the "structuring" directive. + PENDING is this testable? + + + Note that "merge: combine" is deprecated, and MUST be considered undefined behavior when encountered. + PENDING specification + + + If no merge directive is given in the profile, or if a merge is given without a combine, merge conflicts MUST be treated as if method: keep was given. + + + + When a merge is indicated by method:keep, or when no merge directive is given, the keepcombination rule is used. Any control with the same distinctive ID Distinct ID of ObjectsMUST NOT not merged. (They are kept.) + + + + + Processors SHOULD provide a warning under the merge:keep directive when duplicate controls are detected. + + + + + The processor MAY throw an error and cease processing (short-circuiting a certain future error) when duplicate controls are detected under the merge:keep directive. + + + + + When the "use-first"combination rule is applied, and controls that share a distinctive ID are found, the first control encountered MUST be kept, the rest MUST be discarded. "First" MUST be determined by a top-down, depth-first traversal of the source profile's import hierarchy. + + + + + Optionally, one of three "structuring" directives can be included as a child of merge: flat, as-isand custom. When one of these appears, it is the selected structuring directive. If more than one appears, processors MUST generate an error and cease processing. + PENDING how do we test this? + + + If no merge directive is given in the profile, or if a merge is given without a structuring directive, structuring the output MUST be treated as if the structuring directive flat was given. For example, a profile with no merge directive: + + + + Profiles with the "flat" merge directive MUST be resolved as unstructured catalogs, with no grouping or nesting of controls. + + + + Unstructured catalog output MUST be produced by adhering to the following requirements: + + + All included controls are output to the target as a flat list directly under "catalog". + + + + Any included "loose params" are output to the target as a flat list directly under "catalog". + + + + Any groups are discarded. + + + + + Processors MUST handle the as-is directive by adhering to the following requirements: + + + All included controls are output to the target, keeping the structure of the groups and nested controls. Any group that holds an included control MUST appear in the output with all of its non-control children intact. If an included control has a parent control that was not included, that control's output location is "up-leveled", or made equal to the non-included parent. This applies recursively until the control is directly under either "catalog" or another included control. + + + Any included "loose params" are output to the target as a flat list directly under "catalog". + + + A groupobject given under custom MUST result in a group with the exact same content (excluding insert-controls) in the target catalog. + + + If the ID of the group matches the ID of a group that has been included during the import phase, all contents inside the group, including title, param, prop and part objects MUST be copied into the target, appearing in the same order as in the source. + + + When processing the control selection of a custom element, the behavior defined in this section MUST be followed to generate the output. + + + In the case that a control selection matches none of the included controls, it MUST be ignored. + + + In the case that a control selection matches none of the included controls, a warning SHOULD be provided. + + + If no such parameter is found, a warning SHOULD be issued. + + + If no such parameter is found, processing MUST still continue. + + + For the following objects inside the source: class, depends-on, label, usage, values, select; the object MUST be copied into the target from the source, first removing any existing objects with the same name. + + + For the following objects inside the source: props, links, constraints, guidelines; the contents of the object MUST be added to the contents of the target object of the same name. If no such object exists in the target, it is created. + + + For the following objects inside the source: prop, link; the object MUST be copied into the target from the source, first removing any existing objects with the same distinctive ID. (Distinct ID of Objects). + + + If more than one set-parameter directive is given for the same parameter, all MUST BE applied, in the sequence given in the profile. + + + An add directive with no by-id child MUST be considered an implicit binding, and will apply to the control as a whole. + + + The contents of an implicitly bound add directive MUST be added to the control contents in the target, either after its title when position is starting, or at the end if its position is ending, or if no valid position is given. + + + When an add directive is implicitly bound, the position values before and after MUST be treated like starting and ending, respectively. + + + After processing an implicitly bound add directive, the control contents MUST be sorted to appear in the required order: a new prop appears after any prop already in the control, when position is ending, or not given, or before any prop in the control when position is starting. + + + An add directive with a by-id child MUST be considered an explicit binding, and applies to only a single object inside the control. + + + When an add directive is explicitly bound, the value of the by-id child MUST correspond to the value of an id on an object inside the control, and not the control itself. + + + If by-id does not correspond to such a value, the add directive MUST be considered inoperative and ignored. + + + An inoperative add directive MAY result in a warning. + + + When position has a value of startingor ending, the contents of the source MUST be added inside the target, either at the start or end of its contents, respectively. + + + When position has a value of before or after, the contents of the source MUST be added outside the target, either directly before or after it, respectively. + + + Profile resolution tools MUST be able to correctly handle add directives targetting nested controls. This includes directives that target a child control as well as directives that target a parent control and modify the child. + + + An object inside the control MUST be removed from the output if and only if it meets all of the criteria given by the child objects of the remove directive. + + + + The remove directive criteria by-id MUST match an object if and only if its value is identical to the id value of that object. + + + + The remove directive criteria name-ref MUST match an object if and only if its value is identical to the value of that object's name child. + + + + The remove directive criteria ns-ref MUST match an object if and only if its value is identical to the value of that object's ns child. + + + The remove directive criteria class-ref MUST match an object if and only if its value is identical to the value of that object's class child. + + + The remove directive criteria item-name MUST match an object if and only if its value is identical to the value of that object's serialized name. + + + + In serialization formats that use arrays of objects in the OSCAL model, an object's name MUST be referenced as singular form of its containing parent array. + + + The output's backmatter MUST be generated by copying in each resource object from the backmatters of the imported catalogs/profiles in top-to-bottom order, then by copying in each resource object from the backmatter of the source profile itself. These objects MUST be processed in the order they are defined in each respective document. + + + If a given resource has the same uuid as a resource that has already been added, the previous resource MUST be removed, and the more recent one added, unless superseded by other requirements. + + + A resource with a child prop of name:keep and value:always MUST NOT be replaced by the addition of another resource, unless the new resource also has a child prop of name:keep and value:always. + + + Tools MAY check for pruning conditions Pruning and Ordering as resources are added as long as the final result is the same as if the pruning had taken place at the end of all resource addition. + + + The output catalog's metadata MUST have a unique top-level UUID (metadata:uuid). This UUID MAY be generated as seen fit by the tool, as long as it is reasonable to assume it is globally unique. It is RECOMMENDED that tools use a Version 4 UUID as specified in Section 4 of RFC 4122. + + + The value of metadata:version in the target MUST be set with a string that identifies the version of that document. + + + The metadata:version SHOULD be used to track updates to this specific output document. + + + The value of metadata:oscal-version in the target MUST be set with a string that identifies the version of OSCAL used by this tool to resolve the profile (ex. 1.0.0). This value MUST be determined by compiling the oscal-versions from each imported document and the source profile, and taking the most recent minor version. If this version is more recent than what the resolution tool is using, then the value of oscal-version MUST be the version that the tool used internally. + PENDING https://github.com/usnistgov/OSCAL/issues/1313 + + + If any of the above OSCAL versions (imported document versions, source profile version, tool version) are of a different major version (the first digit differs), the tool SHOULD provide an error and cease processing. + + + The value of metadata:last-modified in the target MUST be set with a valid timestamp representing the time the profile resolution completed. + PENDING develop an external (XPath) test + + + A child prop object with name:source-profile MUST be created. The value object of this prop SHOULD be set with a valid URI that points to the profile that resulted in this catalog. + + + If there are privacy or security concerns, the value object of this prop MAY be set to anything, in which case the simple existence of the source-profile property indicates that this is a resolved profile. + + + A child prop object with name:resolution-tool SHOULD be created. The value object of this prop in the target SHOULD be set with a string that represents the tool that was used to resolve this catalog. + + + For any metadata:roles or metadata:parties that exist in the source catalogs, if they have a prop child with name:keep and value:always, they are to be copied as is into the output metadata. + + + The processor SHOULD prune the resulting output catalog by removing unused objects. + + + + Any object that has a child prop with a name of "keep" and a value of "always" MUST NOT be pruned. + + + + If an object was explicitly included in the Including Controls, it MUST NOT be pruned. + PENDING How to test? isn't this just selection semantics + + + If an object was referenced in a custom section of the source profile, it MUST NOT be pruned. + PENDING clarification + + + If an object was referenced in the modify section of the source profile, it MUST NOT be pruned. Any objects removed in that section are still removed. + PENDING clarification + + + If the object appears in a reference anywhere in the final result catalog, except in other objects that also meet all other pruning criteria, it MUST NOT be removed. A reference to a given object exists if #{distinctiveID} appears anywhere, where {distinctiveID} is the distinctive ID of the object Distinct ID of Objects. + PENDING clarification + + + Tools MUST reorder the output catalog into canonical order Order of objects in serialization, except where this specification provides different ordering requirements. + PENDING how do we test? + + + For the objects control, param, and group, distinctiveness MUST be determined by the value of the "id" child object. + PENDING how do we test? Query outputs for duplicate IDs? Example docs? + + + For the object resource, distinctiveness MUST be determined by the value of the "uuid" Backmatter Resolution. + PENDING how do we test? Query outputs for duplicate UUIDs? Example docs? + + + Profile Resolution tools SHOULD be able to handle source profiles, imported catalogs, and imported profiles that are serialized in XML, JSON, or YAML. + PENDING how do we test? + + + A different serialization format of any given input MUST NOT result in a differing output catalog. + PENDING how do we test? + + + The final Catalog output, if using XML, MUST be valid as defined by the XML model documentation for the OSCAL Catalog. See the complete XML reference for model requirements. + PENDING how do we test? + + + The final Catalog output, if using JSON, MUST be valid as defined by the JSON model documentation for the OSCAL Catalog. See the complete JSON reference for model requirements. + PENDING how do we test? + + + The final Catalog output, if using YAML, MUST be valid as defined by the JSON model documentation for the OSCAL Catalog. + PENDING how do we test? + + + When the output format is XML, tools MUST use the OSCAL canonical order as described above. When using the YAML or JSON formats, order conveys no meaning, and is not considered important. + PENDING how do we test this? + + diff --git a/src/specifications/profile-resolution/spec-checkup.sch b/src/specifications/profile-resolution/spec-checkup.sch deleted file mode 100644 index bf2c4034a6..0000000000 --- a/src/specifications/profile-resolution/spec-checkup.sch +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - section is too deep - - - diff --git a/src/specifications/profile-resolution/unit-tests.xsd b/src/specifications/profile-resolution/unit-tests.xsd new file mode 100644 index 0000000000..c746b134a0 --- /dev/null +++ b/src/specifications/profile-resolution/unit-tests.xsd @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Generation succeeded. + + + + + Generation resulted in failure caused by some error. + + + + + + + + + + Content is XML. + + + + + Content is JSON. + + + + + Content is YAML. + + + + + + + + + + The actual content matched the expectect content. + + + + + The actual content did not match the expectect content. + + + + + + + + + + Validation succeeded. + + + + + Validation resulted in failure caused by some content defect or error. + + + + + diff --git a/src/utils/util/resolver-pipeline/message-handler.xsl b/src/utils/util/resolver-pipeline/message-handler.xsl new file mode 100644 index 0000000000..7b0420fbb7 --- /dev/null +++ b/src/utils/util/resolver-pipeline/message-handler.xsl @@ -0,0 +1,19 @@ + + + + + + + + + { + string-join(($message-type, $error-code, $text),': ') + } + + + \ No newline at end of file diff --git a/src/utils/util/resolver-pipeline/oscal-profile-RESOLVE.xsl b/src/utils/util/resolver-pipeline/oscal-profile-RESOLVE.xsl index 025a5785a9..e4ba2066ba 100644 --- a/src/utils/util/resolver-pipeline/oscal-profile-RESOLVE.xsl +++ b/src/utils/util/resolver-pipeline/oscal-profile-RESOLVE.xsl @@ -1,11 +1,10 @@ + + off - - - - - - - ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$ - - - - - - - - - - - - - - - - - - 00000000-0000-4000-B000-000000000000 - - - + - + + + + @@ -109,8 +86,10 @@ - - + + + + diff --git a/src/utils/util/resolver-pipeline/oscal-profile-resolve-merge.xsl b/src/utils/util/resolver-pipeline/oscal-profile-resolve-merge.xsl index d6464f5506..89099f6f9f 100644 --- a/src/utils/util/resolver-pipeline/oscal-profile-resolve-merge.xsl +++ b/src/utils/util/resolver-pipeline/oscal-profile-resolve-merge.xsl @@ -1,6 +1,7 @@ - - + + + @@ -25,34 +28,43 @@ templates not this one. --> - + + - + + - + - + - + - + + + - - - + + + - + @@ -64,7 +76,8 @@ - + + @@ -77,18 +90,34 @@ - - - + + + + + + + + Found multiple structuring directives. Choose at most one from: flat (default), as-is, custom. + Error + + + + + + + + - + - + + - + @@ -96,64 +125,58 @@ - - - - - - - - + + - + - - + + - - - - - - + - - + + + + + + + - + - + + - + + - - - - - - --> - - + + - + @@ -177,6 +200,7 @@ + @@ -194,15 +218,26 @@ - - ... elements of different types combining ... + + + + + + Combining elements of different types is not supported. + Error + + + - + - @@ -219,7 +254,7 @@ - + diff --git a/src/utils/util/resolver-pipeline/oscal-profile-resolve-metadata.xsl b/src/utils/util/resolver-pipeline/oscal-profile-resolve-metadata.xsl index 2f45c909bd..da67371d88 100644 --- a/src/utils/util/resolver-pipeline/oscal-profile-resolve-metadata.xsl +++ b/src/utils/util/resolver-pipeline/oscal-profile-resolve-metadata.xsl @@ -6,29 +6,53 @@ xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:math="http://www.w3.org/2005/xpath-functions/math" xmlns:opr="http://csrc.nist.gov/ns/oscal/profile-resolution" - exclude-result-prefixes="xs math o opr" + xmlns:u="http://csrc.nist.gov/ns/uuid" + exclude-result-prefixes="xs math o opr u" xpath-default-namespace="http://csrc.nist.gov/ns/oscal/1.0" > - + + + + + + + + + + + urn:UNKNOWN - - - - ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$ + + - - - + + + + + + - + @@ -55,13 +80,34 @@ + + + + + + + + + + + + + + - + - + diff --git a/src/utils/util/resolver-pipeline/oscal-profile-resolve-select.xsl b/src/utils/util/resolver-pipeline/oscal-profile-resolve-select.xsl index f4654e1009..52ea10a3b2 100644 --- a/src/utils/util/resolver-pipeline/oscal-profile-resolve-select.xsl +++ b/src/utils/util/resolver-pipeline/oscal-profile-resolve-select.xsl @@ -1,5 +1,5 @@ - - + @@ -94,7 +93,16 @@ - + + + + + + Document not acquired for resource with uuid {@uuid + }: No rlink with media-type='xml' or href ending with '.xml' + + @@ -104,7 +112,7 @@ - + @@ -118,29 +126,6 @@ - - - - - - - - - - - - - - - - - - - - - - @@ -161,68 +146,17 @@ --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - Document not acquired: ' - - ' resolved as ' - - ' (as OSCAL XML) - - - - + Document not acquired: {$href} resolved as { + $resolved-href} (as OSCAL XML) + - + @@ -237,7 +171,7 @@ - + diff --git a/src/utils/util/resolver-pipeline/oscal-profile-test-helper.xsl b/src/utils/util/resolver-pipeline/oscal-profile-test-helper.xsl index a423068823..612b5507db 100644 --- a/src/utils/util/resolver-pipeline/oscal-profile-test-helper.xsl +++ b/src/utils/util/resolver-pipeline/oscal-profile-test-helper.xsl @@ -3,7 +3,8 @@ xmlns:opr="http://csrc.nist.gov/ns/oscal/profile-resolution" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="#all" - xpath-default-namespace="http://csrc.nist.gov/ns/oscal/1.0"> + xpath-default-namespace="http://csrc.nist.gov/ns/oscal/1.0" + default-mode="scrubbing"> - + @@ -49,49 +49,64 @@ v4 UUID - + + - - - - - - - - - - - + - - + + - + + ________-____-4___-=___-____________ + + - - + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - ________-____-4___-=___-____________ - - - diff --git a/src/utils/util/resolver-pipeline/readme.md b/src/utils/util/resolver-pipeline/readme.md index aa9cadeb67..0e8913a01b 100644 --- a/src/utils/util/resolver-pipeline/readme.md +++ b/src/utils/util/resolver-pipeline/readme.md @@ -1,33 +1,49 @@ -## Resolver pipeline +## Profile Resolver Pipeline -Profile resolution is implemented here as a set of XSLT transformations to be performed in sequence, applied to defined inputs (a **source profile** with imported **catalog** sources) to produce defined outputs (a **profile resolution result** in the form of a catalog). The word **baseline** is also used to refer to a particular profile in application, whether in its unprocessed form or its resolved, serialized form. +Profile resolution is implemented here as a sequence of XSLT transformations. The sequence applies to defined inputs (a **source profile** with imported **catalog** sources) and produces defined outputs (a **profile resolution result** in the form of a catalog). The word **baseline** also refers to a particular profile in application, whether in its unprocessed form or its resolved, serialized form. -The sequence reflects and roughly corresponds to the three steps in profile resolution described for OSCAL in the [Profile Resolution Specification](https://pages.nist.gov/OSCAL/concepts/processing/profile-resolution/): +The sequence of XSLT transformations reflects and roughly corresponds to the steps in profile resolution described for OSCAL in the [Profile Resolution Specification](https://pages.nist.gov/OSCAL/concepts/processing/profile-resolution/): -- **selection** (importing catalogs or profiles and selecting controls from them) +- **selection**: importing catalogs or profiles, and selecting controls from them -- **organization (merging)** i.e. specifying how selected controls are to be organized in representation +- **organization (merging)**: organizing the selected controls for the output representation -- **modification** - setting parameters and potentially supplementing, amending or editing control text +- **modification**: setting parameters and potentially supplementing, amending or editing control text -For demonstration, the expected interim results for test files are kept in the testing/\* folders +### Tests for this Implementation -Note that these interim results are *not always valid to any OSCAL schema* while at the same time they are quite close to OSCAL profile and catalog syntax. +The `testing/*` folders contain XSpec tests that indicate expected interim results of each XSLT transformation in the sequence. -Testing files for profile resolution in general are kept [with the specification](../../../specifications/profile-resolution). The testing files in this subdirectory are only for this implementation. +Note that these interim results are *not necessarily valid to any OSCAL schema*, although they are quite close to OSCAL profile and catalog syntax. -### Invoking the XSLT: +The files in `testing/*` are only for this implementation. Implementation-independent tests and sample files for profile resolution are [with the specification](../../../specifications/profile-resolution). -Use a recent version of Saxon for best results -- although we would also be *very interested* to hear from users of other XSLT engines conformant to the 3.1 family of XML standards (XSLT/XPath/XDM/XQuery). +### Invoking the XSLT -The main entry point for the transformation pipeline is the dynamic build XSLT called `oscal-profile-RESOLVE.xsl`, which invokes the core transformation steps in sequence, taking the source profile document as primary input. Load Saxon with your document and this stylesheet as follows (for example): +Use a recent version of Saxon for best results — although we would also be *very interested* to hear from users of other XSLT engines conformant to the 3.1 family of XML standards (XSLT/XPath/XDM/XQuery). + +The entry point for the transformation pipeline is `oscal-profile-RESOLVE.xsl`, which invokes the transformation steps in sequence, taking the source profile document as primary input. Load Saxon with your document and this stylesheet as follows (for example): ```bash > java -cp saxon-he-10.0.jar net.sf.saxon.Transform -t -s:YOUR_PROFILE_DOCUMENT.xml -xsl:path/to/oscal-profile-RESOLVE.xsl -o:YOUR_RESULT_BASELINE.xml ``` -Alternatively, set up the bindings in an IDE or programmed environment that has XSLT 3.1 support. +You can optionally set one or more of the parameters listed in the following table, using syntax `name=value` at the end of the command above. The sequence of parameters is not significant. + +For example, +```bash +> java -cp saxon-he-10.0.jar net.sf.saxon.Transform -t -s:YOUR_PROFILE_DOCUMENT.xml -xsl:path/to/oscal-profile-RESOLVE.xsl -o:YOUR_RESULT_BASELINE.xml uuid-method=random-xslt hide-source-profile-uri=true +``` +| Name | Description | Default | +|---|---|---| +| `hide-source-profile-uri` | If `true`, the output catalog's metadata does not record the source profile's URI. | `false` | +| `path-to-source` | Path from output catalog to location of source profile. | None | +| `top-uuid` | UUID value for top-level element in output catalog, if `uuid-method` is `user-provided`. | None | +| `uuid-method` | Method for computing UUID of top-level element in output catalog. Valid values are: `random-xslt`, in which case the `random-number-generator` XPath function must be available; `random-java`, in which case the `java.util.UUID.randomUUID()` Java method must be available; `user-provided`, in which case you must specify the `top-uuid` parameter; `web-service`, referring to the `uuid-service` parameter value; and `fixed`. | `fixed`| +| `uuid-service` | URI for a web service that produces a UUID, if `uuid-method` is `web-service`.| `https://www.uuidgenerator.net/api/version4`| + +Alternatively, set up the bindings in an IDE or programming environment that has XSLT 3.1 support. -Note that URIs (addresses) given in a profile document must link correctly as absolute or relative paths to their imported catalogs, as demonstrated in examples. +Note that URIs (addresses) given in a profile document must link correctly as absolute or relative paths to their imported catalogs, as demonstrated in [examples](../../../specifications/profile-resolution/profile-resolution-examples). -A captured and serialized profile resolution will take the form of an OSCAL catalog, and be valid to the catalog schema for correctly formed inputs. +A serialized output of profile resolution takes the form of an OSCAL catalog. Assuming inputs are correctly formed, the output is valid to the catalog schema. diff --git a/src/utils/util/resolver-pipeline/select-or-custom-merge.xsl b/src/utils/util/resolver-pipeline/select-or-custom-merge.xsl new file mode 100644 index 0000000000..62c652ffd3 --- /dev/null +++ b/src/utils/util/resolver-pipeline/select-or-custom-merge.xsl @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/utils/util/resolver-pipeline/testing/1_selected/catalog-no-uuid.xml b/src/utils/util/resolver-pipeline/testing/1_selected/catalog-no-uuid.xml new file mode 100644 index 0000000000..78beab5883 --- /dev/null +++ b/src/utils/util/resolver-pipeline/testing/1_selected/catalog-no-uuid.xml @@ -0,0 +1,2 @@ + + diff --git a/src/utils/util/resolver-pipeline/testing/1_selected/catalog-nonstandard-file-name-ext.xmlcat b/src/utils/util/resolver-pipeline/testing/1_selected/catalog-nonstandard-file-name-ext.xmlcat new file mode 100644 index 0000000000..a506f84570 --- /dev/null +++ b/src/utils/util/resolver-pipeline/testing/1_selected/catalog-nonstandard-file-name-ext.xmlcat @@ -0,0 +1,2 @@ + + diff --git a/src/utils/util/resolver-pipeline/testing/1_selected/glob-rewrite.xspec b/src/utils/util/resolver-pipeline/testing/1_selected/glob-rewrite.xspec index add11d3ed1..e417e4641e 100644 --- a/src/utils/util/resolver-pipeline/testing/1_selected/glob-rewrite.xspec +++ b/src/utils/util/resolver-pipeline/testing/1_selected/glob-rewrite.xspec @@ -1,12 +1,10 @@ - -]> + ac @@ -30,5 +28,12 @@ ac-1(*) + + + + + + + diff --git a/src/utils/util/resolver-pipeline/testing/1_selected/resource-media-type.xml b/src/utils/util/resolver-pipeline/testing/1_selected/resource-media-type.xml new file mode 100644 index 0000000000..5db7281637 --- /dev/null +++ b/src/utils/util/resolver-pipeline/testing/1_selected/resource-media-type.xml @@ -0,0 +1,26 @@ + + + + + + Test Profile with Nonstandard File Name Extension in resource/rlink + 2020-05-30T14:39:37.3-04:00 + 1.0 + 1.0.0-rc2 + + + + + + + + + + + + + + + diff --git a/src/utils/util/resolver-pipeline/testing/1_selected/resource-multiple-rlinks.xml b/src/utils/util/resolver-pipeline/testing/1_selected/resource-multiple-rlinks.xml new file mode 100644 index 0000000000..1f41a36168 --- /dev/null +++ b/src/utils/util/resolver-pipeline/testing/1_selected/resource-multiple-rlinks.xml @@ -0,0 +1,21 @@ + + + + + + Test Profile with Nonstandard File Name Extension in resource/rlink + 2020-05-30T14:39:37.3-04:00 + 1.0 + 1.0.0-rc2 + + + + + + + + + + + diff --git a/src/utils/util/resolver-pipeline/testing/1_selected/select-mapping-controls.xspec b/src/utils/util/resolver-pipeline/testing/1_selected/select-mapping-controls.xspec new file mode 100644 index 0000000000..950e4a241f --- /dev/null +++ b/src/utils/util/resolver-pipeline/testing/1_selected/select-mapping-controls.xspec @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + x1 + + + + + + + + + + + ... + + Group X of XYZ + + Control X1 + + + ... + ... + + + + + + + + + x1 + + + + + + + + + + x1 + + + + + + + + + + + ... + + Group X of XYZ + + Control X1 + + + ... + ... + + + ... + + Group X of XYZ + + Control X1 + + + ... + ... + + + + + + + + z3 + + + + + + + + + + Control Z3 + Control Z3-A + Control Z3-A-1 + + + + + + + + + z3 + + + + + + + + + + Control Z3 + Control Z3-A + Control Z3-A-1 + + + + + + + + + x1 + + + + + + + + + + + + + + + + x1 + + + + + + + + + + + + + + + + x1 + + + map-x1 + + + + + + + + + + + + + + + x1 + + + + + + + + + + + + + + + x1 + + + + + + + + + + + + + diff --git a/src/utils/util/resolver-pipeline/testing/1_selected/select-rlink.xspec b/src/utils/util/resolver-pipeline/testing/1_selected/select-rlink.xspec index 65f5006cf9..cb70e55295 100644 --- a/src/utils/util/resolver-pipeline/testing/1_selected/select-rlink.xspec +++ b/src/utils/util/resolver-pipeline/testing/1_selected/select-rlink.xspec @@ -1,15 +1,18 @@ - -]> + + + + - + z3 @@ -50,7 +53,7 @@ Tiny Catalog - + @@ -95,13 +98,13 @@ Tiny Catalog - - + + - + diff --git a/src/utils/util/resolver-pipeline/testing/1_selected/select.xspec b/src/utils/util/resolver-pipeline/testing/1_selected/select.xspec index 7df1cae86a..7f94a578ef 100644 --- a/src/utils/util/resolver-pipeline/testing/1_selected/select.xspec +++ b/src/utils/util/resolver-pipeline/testing/1_selected/select.xspec @@ -1,367 +1,1517 @@ - -]> - - - - + xmlns:xs="http://www.w3.org/2001/XMLSchema" + stylesheet="../../oscal-profile-resolve-select.xsl" + xslt-version="3.0"> - - - - - - - - - - + + - - - - - XYZ Tiny Catalog - 2020-05-30T14:51:42.355-04:00 - 1.0 - 1.0.0-rc2 - - - Group X of XYZ - - - Group Y of XYZ - - - Group Z of XYZ - - - - + + + + + ... + ... + ... + ... + + + + + + text + + + + + + + + + - - - - - - - - - - - - - XYZ Tiny Catalog - 2020-05-30T14:51:42.355-04:00 - 1.0 - 1.0.0-rc2 - - - Group X of XYZ - Control X1 - Control X2 - Control X3 - - - Group Y of XYZ - Control Y1 - Control Y2 - Control Y3 - - - Group Z of XYZ - Control Z1 - Control Z2 - Control Z3 - Control Z3-A - Control Z3-A-1 - - - - - - + + + + + + + + + + - - - - - - x1 - - - - - - - - - XYZ Tiny Catalog - 2020-05-30T14:51:42.355-04:00 - 1.0 - 1.0.0-rc2 - - + + + + + + + + + + + + + + + + + + + + + + XYZ Tiny Catalog + 2020-05-30T14:51:42.355-04:00 + 1.0 + 1.0.0-rc2 + + + Group X of XYZ + + + Group Y of XYZ + + + Group Z of XYZ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ... + + Group X of XYZ + Control X1 + Control X2 + Control X3 + + + Group Y of XYZ + Control Y1 + Control Y2 + Control Y3 + + + Group Z of XYZ + Control Z1 + Control Z2 + Control Z3 + Control Z3-A + Control Z3-A-1 + + + + + + + + + + + + + + + + + + x2 + x1 + + + + + + + + + ... + Group X of XYZ Control X1 + Control X2 Group Y of XYZ Group Z of XYZ - - + + + + + + + + + + + + + + + + + + + + + + + ... + + Group X of XYZ + Control X1 + Control X2 + Control X3 + + Group Y of XYZ + Group Z of XYZ + + + + + + + + + + + + x1 + y1 + z1 + + + + + + + + + ... + + Group X of XYZ + Control X2 + Control X3 + + + Group Y of XYZ + Control Y2 + Control Y3 + + + Group Z of XYZ + Control Z2 + Control Z3 + Control Z3-A + Control Z3-A-1 + + + + + + + + + + + + + + z3 + + + + + + + + + ... + + Group X of XYZ + + + Group Y of XYZ + + + Group Z of XYZ + Control Z3 + Control Z3-A + Control Z3-A-1 + + + + + + + + + + + + + + z3.a-1 + + + + + + + + + ... + + Group X of XYZ + + + Group Y of XYZ + + + Group Z of XYZ + Control Z3 + Control Z3-A + Control Z3-A-1 + + + + + + + + + + + + + + z3.a-1 + + + + + + + + + ... + + Group X of XYZ + + + Group Y of XYZ + + + Group Z of XYZ + Control Z3-A-1 + + + + + + + + + + + + x1 + + + + + y1 + + + + + + + + + ... + + Group X of XYZ + Control X1 + + Group Y of XYZ + Group Z of XYZ + + + ... + + Group X of XYZ + + + Group Y of XYZ + Control Y1 + + Group Z of XYZ + + + + + + + + + + + + + + a1 + b1 + + + + + + + + + ... + + Group A of C + + + A.a value + + + + + + Control A1 + + + a1.a value + + + +

    A1 aaaaa aaaaaaaaaa

    +

    Parameter A.a is set:

    +

    Parameter a1.a is set:

    +
    +
    +
    + + Group B of C + + Control B1 + + +

    B1 bbbb bbbbbbb.

    +
    +
    +
    + + Group C of C + + + + + A citation to an out of line document. + + + + + A citation to an out of line document. + + + + + + A citation to an out of line document. + + + +
    +
    +
    +
    - - - - - - - - - - - + + + + + + + + + + + + + + ... + + + - - - - - XYZ Tiny Catalog - 2020-05-30T14:51:42.355-04:00 - 1.0 - 1.0.0-rc2 - - - Group X of XYZ - Control X1 - Control X2 - Control X3 - - Group Y of XYZ - Group Z of XYZ - - - + + + + + + + + + + + + + + + + + - - - - - - - x1 - y1 - z1 - - - - + + + + + + + + + ... + ... + + + + + + + + + + - - - - - XYZ Tiny Catalog - 2020-05-30T14:51:42.355-04:00 - 1.0 - 1.0.0-rc2 - - - Group X of XYZ - Control X2 - Control X3 - - - Group Y of XYZ - Control Y2 - Control Y3 - - - Group Z of XYZ - Control Z2 - Control Z3 - Control Z3-A - Control Z3-A-1 - - - - - - + + + + + + + + + + + + + + ... + + + + + + ... + + + + + + + + + Document not acquired for resource with uuid foo: No rlink with media-type='xml' or href ending with '.xml' + + + + - - - - - - z3 - - - - + + + + + + + + + + + + + + + + + + - - - - - XYZ Tiny Catalog - 2020-05-30T14:51:42.355-04:00 - 1.0 - 1.0.0-rc2 - - - Group X of XYZ - - - Group Y of XYZ - - - Group Z of XYZ - Control Z3 - Control Z3-A - Control Z3-A-1 - - - - - + + + + + Group X of XYZ + + + + + + Group X of XYZ + - - - - - - x1 - - - - - y1 - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - XYZ Tiny Catalog - 2020-05-30T14:51:42.355-04:00 - 1.0 - 1.0.0-rc2 - - - Group X of XYZ - Control X1 - - Group Y of XYZ - Group Z of XYZ - - - - XYZ Tiny Catalog - 2020-05-30T14:51:42.355-04:00 - 1.0 - 1.0.0-rc2 - - - Group X of XYZ - - - Group Y of XYZ - Control Y1 - - Group Z of XYZ - - - + + + + + + + + ... + + + + + + + + + + + - - - - - - a1 - b1 - - - + + + + + + Control A1 + + + + + - - - - - - ABC Catalog - 2020-05-30T14:51:38.311-04:00 - 1.0 - 1.0.0-rc2 - - - Group A of C - - - A.a value - - - - - - Control A1 - - - a1.a value - - - -

    A1 aaaaa aaaaaaaaaa

    -

    Parameter A.a is set: ...

    -

    Parameter a1.a is set: ...

    -

    Also, we refer to a citation.

    -
    -
    -
    - - Group B of C - - Control B1 - - -

    B1 bbbb bbbbbbb.

    -
    -
    -
    - - Group C of C - - - - - A citation to an out of line document. - - - -
    -
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + abc + + + + + + + + + + + + + + + abc + + + + + + + + + + + + + + + level-four + + + + + + + + + + + + + level-four + + + + + + + + + + + + + level-four + + + + + + + + + + + + + level-two + + + + + + + + + + + + + level-two + + + + + + + + + + + + + level-two + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + level-four + + + level-three + + + + + + + + + + + + + level-two + + + level-three + + + + + + + + + + + + + + + + + + + + + + + + + + + abc + + + + + + + + + + + + + + + + abc + + + + + + + + + + + + + + + + level-four + + + + + + + + + + + + + + level-four + + + + + + + + + + + + + + level-four + + + + + + + + + + + + + + level-two + + + + + + + + + + + + + + level-two + + + + + + + + + + + + + + level-two + + + + + + + + + + + + + level-two + + + level-three + + + + + + + + + + + + + level-two + + + level-three + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + level-four + + + + + + + + + + + + + + + + level-four + + + + + + + + + + + + + + level-four + + + level-four + + + + + + + + + + + + + level-four + + + level-four + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ... + + +
    diff --git a/src/utils/util/resolver-pipeline/testing/2_metadata/metadata.xspec b/src/utils/util/resolver-pipeline/testing/2_metadata/metadata.xspec index a670f3b298..2cb9d2fade 100644 --- a/src/utils/util/resolver-pipeline/testing/2_metadata/metadata.xspec +++ b/src/utils/util/resolver-pipeline/testing/2_metadata/metadata.xspec @@ -1,162 +1,359 @@ - - - - - - - - - + + - - - + + + + Test Profile + 2021-05-30T14:39:35.84-04:00 + 1.3 + 1.0.1 + + - Small Profile for Testing - 2019-11-13T12:13:58.517-05:00 + XYZ Tiny Catalog + 2020-05-30T14:51:42.355-04:00 1.0 - 1.0-rc2 + 1.0.0 + + Internal link within catalog - - + + Group X of XYZ + +
    +
    +
    - - - - Small Profile for Testing - ... - 1.0 - 1.0-rc2 - - - - + + + text + + + + + + + + + - + + + + - + + + + + + + + + + + + + + + + + + - Pathological Profile - 2019-11-13T12:41:07.061-05:00 - 1.0 - 1.0-rc2 + Test Profile + ... + 1.3 + ... + + - + + + + + + - ABC Catalog - 2019-11-01T10:16:22.939-04:00 + Pathological Profile + 2019-11-13T12:41:07.061-05:00 + 2019-11-13T12:41:07.061-05:00 1.0 1.0-rc2 + ...doi... + + + Standing Committee + + - - - - - - + + + - Pathological Profile + ... + 2019-11-13T12:41:07.061-05:00 ... - 1.0 - 1.0-rc2 - - - - - - - - - - - Pathological Profile - 2019-11-13T12:41:07.061-05:00 - 1.0 - 1.0-rc2 + ... + ... + ...doi... + + Standing Committee - + + + + + - ABC Catalog - 2019-11-01T10:16:22.939-04:00 + Pathological Profile + 2019-11-13T12:41:07.061-05:00 1.0 1.0-rc2 + + - - - - - - + + + - Pathological Profile + ... ... - 1.0 - 1.0-rc2 - - - - Standing Committee - - - - - - - - - - - - Pathological Profile - 2019-11-13T12:41:07.061-05:00 - 1.0 - 1.0-rc2 - Internal link - - - Standing Committee - - + ... + ... + + + + - + + + + + - ABC Catalog - 2019-11-01T10:16:22.939-04:00 + Pathological Profile + 2019-11-13T12:41:07.061-05:00 1.0 1.0-rc2 + Internal link - - - - - - + + + - Pathological Profile + ... ... - 1.0 - 1.0-rc2 - + ... + ... + + Internal link - - - Standing Committee - - - - - + + + + + + + + + + + + + + + + ... + + + + + + + + + + + + + + + + + + + + 1.3 + + + + + ... + + + + + + + + 1.0.3 + + + + + 1.0.1 + + + + + 1.0.4 + + + + + 1.0.2 + + + + + + 1.0.4 + + + + + + + 1.0.4 + + + + 1.0.1 + + + + + + 1.0.4 + + + + + + + 1.4.0 + + + + 1.2.0 + + + + + + 1.1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/src/utils/util/resolver-pipeline/testing/2_metadata/random-util.xspec b/src/utils/util/resolver-pipeline/testing/2_metadata/random-util.xspec new file mode 100644 index 0000000000..daa5ea4471 --- /dev/null +++ b/src/utils/util/resolver-pipeline/testing/2_metadata/random-util.xspec @@ -0,0 +1,207 @@ + + + + + x + + ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + {codepoints-to-string($ov:charnum)} + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/utils/util/resolver-pipeline/testing/2_metadata/uuid-method-choice.xspec b/src/utils/util/resolver-pipeline/testing/2_metadata/uuid-method-choice.xspec new file mode 100644 index 0000000000..f1a5f6b8e3 --- /dev/null +++ b/src/utils/util/resolver-pipeline/testing/2_metadata/uuid-method-choice.xspec @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/utils/util/resolver-pipeline/testing/2_metadata/uuid-value.txt b/src/utils/util/resolver-pipeline/testing/2_metadata/uuid-value.txt new file mode 100644 index 0000000000..a8e02be099 --- /dev/null +++ b/src/utils/util/resolver-pipeline/testing/2_metadata/uuid-value.txt @@ -0,0 +1 @@ +309deb03-491b-4677-9148-bc1b79a21c9c \ No newline at end of file diff --git a/src/utils/util/resolver-pipeline/testing/3_merged/merge-as-is.xspec b/src/utils/util/resolver-pipeline/testing/3_merged/merge-as-is.xspec index f262452115..f08929c155 100644 --- a/src/utils/util/resolver-pipeline/testing/3_merged/merge-as-is.xspec +++ b/src/utils/util/resolver-pipeline/testing/3_merged/merge-as-is.xspec @@ -1,52 +1,46 @@ - - - - + stylesheet="../../oscal-profile-resolve-merge.xsl" + xslt-version="3.0"> - - - - - - - - - - Group X of XYZ - Control X1 - Control X2 - Control X3 - - - Group Y of XYZ - Control Y1 - Control Y2 - Control Y3 - - - Group Z of XYZ - Control Z1 - Control Z2 - Control Z3 - Control Z3-A - Control Z3-A-1 + + + + + + + Group X of XYZ + Control X1 + Control X2 + Control X3 + + + Group Y of XYZ + Control Y1 + Control Y2 + Control Y3 + + + Group Z of XYZ + Control Z1 + Control Z2 + Control Z3 + Control Z3-A + Control Z3-A-1 + - - - - - true - - - - - - + + + + true + + + + + Group X of XYZ Control X1 @@ -69,182 +63,568 @@ - - - - - - - - + + + + + + + + + Group X of XYZ + Control X1 + + + Group Z of XYZ + Control Z1 + Control Z3 + Control Z3-A + Control Z3-A-1 + + + + + + + Group X of XYZ + Control X1 + Control X2 + + + Group Y of XYZ + Control Y1 + Control Y2 + Control Y3 + + + Group Z of XYZ + Control Z3 + Control Z3-A + Control Z3-A-1 + + + + + + true + + + + + + Group X of XYZ - Control X1 + Control X1 + Control X1 + Control X2 - + Group Z of XYZ - Control Z1 - Control Z3 - Control Z3-A - Control Z3-A-1 + Control Z1 + Control Z3 + Control Z3-A + Control Z3-A-1 + + + Control Z3 + Control Z3-A + Control Z3-A-1 - - - - Group X of XYZ - Control X1 - Control X2 - - + Group Y of XYZ - Control Y1 - Control Y2 - Control Y3 + Control Y1 + Control Y2 + Control Y3 - - Group Z of XYZ - Control Z3 - Control Z3-A - Control Z3-A-1 - - + + + + + + + + + Group X of XYZ + + + + no control + + Control X1 + + + + + Group X of XYZ + + + + + Control X1 + Control X2 + + + + true + + + + + + + Group X of XYZ + + + + + no control + + + + + Control X1 + Control X1 + Control X2 - - - true - - - - - - - Group X of XYZ + + + + + + + + Test Profile + 2019-11-13T12:41:07.061-05:00 + 1.3 + 1.0.2 + + + + + Control X1 + + + true + + + + + +

    at least every 3 years

    +
    +
    +
    +
    +
    +
    + + + + Test Profile + 2019-11-13T12:41:07.061-05:00 + 1.3 + 1.0.2 + + + Control X1 + + + + +

    at least every 3 years

    +
    +
    +
    +
    +
    +
    +
    + + + + + Control X1 + + + Ref BBB + + Bbb bbbbb Bbb b. + + + + + + + true + + + + Ref AAA + + Aaaa aaaa aaaa + + + + + + + + Control X1 - Control X2 - - - Group Z of XYZ - Control Z1 - Control Z3 - Control Z3-A - Control Z3-A-1 - - - Control Z3 - Control Z3-A - Control Z3-A-1 - - - - - Group Y of XYZ - Control Y1 - Control Y2 - Control Y3 - - - + + + Ref BBB + + Bbb bbbbb Bbb b. + + + + + Ref AAA + + Aaaa aaaa aaaa + + + + +
    + + - - - - - + + + + + + + uuid a + uuid a again + opr:id b + opr:id b again + uuid c + opr:id c + + + + uuid a + opr:id b + uuid c + + + + + + + + + + + no control + + Control X1 + + + Ref AAA + + + + + true + + + + + + + + + + + Ref AAA + + + + + no control + + Control X1 + + + + + + + + + + Group X of XYZ + Control X1 + + + + Ref AAA + + + + + true + + + + + + + + + + Ref AAA + + + + Group X of XYZ + Control X1 + + + + + + + + + + + Group X of XYZ + + + + true + + + + + + + + + + + + + + + Group X of XYZ + + Group XX + Control X1 + + + + + true + + + + + + + + Group X of XYZ + + Group XX + Control X1 + + + + + + + + + + + + + no control + + Control X1 + + + + + no control + + Control X1 + + + true + + + + + + + + + + no control + + Control X1 + + + + + + + + + id a + id a again + opr:id b + opr:id b again + id c + opr:id c + + + + id a + opr:id b + id c + + + + + + + + + Group X of XYZ + + + + no control + + Control X1 + + + Group Y of XYZ + Control Y1 + + + + true + + + + + + Group X of XYZ no control - Control X1 + Control X1 - - Group Z of XYZ - Control Z1 - Control Z3 - Control Z3-A - Control Z3-A-1 - - + + Group Y of XYZ + Control Y1 - - - + + + + + + + + + Group X of XYZ + + + + no control + + Control X1 + + + Group Y of XYZ + + Group YY + Control Y1 + + + + + true + + + + + + Group X of XYZ - + + no control - Control X1 - Control X2 + Control X1 - + Group Y of XYZ - Control Y1 - Control Y2 - Control Y3 + + Group YY + Control Y1 + - - Group Z of XYZ - Control Z3 - Control Z3-A - Control Z3-A-1 - - + + + + + + + + + Group X of XYZ + + Group XX + Control X1 + + + + + true + + + + + + + Group X of XYZ + + Group XX + Control X1 + - - - true - -
    - - - - - Group X of XYZ - - - - - no control - - - - - Control X1 - Control X1 - Control X2 - - - Group Z of XYZ - Control Z1 - Control Z3 - Control Z3-A - Control Z3-A-1 - - - Control Z3 - Control Z3-A - Control Z3-A-1 - - - - - Group Y of XYZ - Control Y1 - Control Y2 - Control Y3 - - - + + + + + + + + + - diff --git a/src/utils/util/resolver-pipeline/testing/3_merged/merge-back-matter.xspec b/src/utils/util/resolver-pipeline/testing/3_merged/merge-back-matter.xspec deleted file mode 100644 index 3c1e92ee7c..0000000000 --- a/src/utils/util/resolver-pipeline/testing/3_merged/merge-back-matter.xspec +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - - - - - - - - - - Group X of XYZ - Control X1 - - - Group Z of XYZ - Control Z1 - Control Z3 - Control Z3-A - Control Z3-A-1 - - - - - - Ref AAA - - Aaaa aaaa aaaa - - - - - Ref BBB - - Bbb bbbbb Bbb b. - - - - - - - - - - - Control X1 - Control Z1 - Control Z3 - Control Z3-A - - Control Z3-A-1 - - - - - Ref AAA - - Aaaa aaaa aaaa - - - - - Ref BBB - - Bbb bbbbb Bbb b. - - - - - - - - - - - - - - Group X of XYZ - Control X1 - - - Group Z of XYZ - Control Z1 - Control Z3 - Control Z3-A - Control Z3-A-1 - - - - - - Ref AAA - - Aaaa aaaa aaaa - - - - - Ref BBB - - Bbb bbbbb Bbb b. - - - - - - - true - - - - - - - Group X of XYZ - Control X1 - - - Group Z of XYZ - Control Z1 - Control Z3 - Control Z3-A - - Control Z3-A-1 - - - - - - Ref AAA - - Aaaa aaaa aaaa - - - - - Ref BBB - - Bbb bbbbb Bbb b. - - - - - - - - diff --git a/src/utils/util/resolver-pipeline/testing/3_merged/merge-combine.xspec b/src/utils/util/resolver-pipeline/testing/3_merged/merge-combine.xspec new file mode 100644 index 0000000000..6a514161b1 --- /dev/null +++ b/src/utils/util/resolver-pipeline/testing/3_merged/merge-combine.xspec @@ -0,0 +1,275 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Control A + Control B + Control A1 + + + + + + + + + + + Control A + Control A1 + + Control B + + + + + + + + + Control A + + + + + + + + + Control A + Control B + Control A1 + + + + + + + + + + + + + + + + + + + + + + + + + + Control A + Control A1 + + + + Control A + Control A1 + + + + + + + Control A + Control B + Control A1 + + + + + + Control A + Control A1 + + + Control B + + + + + + + + Control A + Control B + Control A1 + + + + + + Control A + Control A1 + + + Control B + + + + + + + + + + + + + + + + + + + + + + + + + + + + Control A + Control A1 + + + + + + Control A + + + + + + + + Control A + Control B + Control A1 + + + + + + Control A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Control A + Control A1 + + + + + Control A + Control A1 + + + + + + + Control A + Control B + Control A1 + + + + + Control A + Control B + Control A1 + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/utils/util/resolver-pipeline/testing/3_merged/merge-custom.xspec b/src/utils/util/resolver-pipeline/testing/3_merged/merge-custom.xspec index 10ec033a70..4cf7ba997a 100644 --- a/src/utils/util/resolver-pipeline/testing/3_merged/merge-custom.xspec +++ b/src/utils/util/resolver-pipeline/testing/3_merged/merge-custom.xspec @@ -1,28 +1,16 @@ - - - - - - - - - - - - - - - + + + + + Group X of XYZ Control X1 @@ -49,7 +37,7 @@ - + New Group 1 @@ -59,8 +47,8 @@ - - New Group 1 + + New Group 2 x2 @@ -71,93 +59,577 @@ - - - - - - New Group 1 - Control X1 - Control Y1 - Control Z1 - - - New Group 1 - Control X2 - Control Y2 - Control Z2 - - - + + + + + ... + ... + + + - - - - - - Group X of XYZ - Control X1 + + + + + + + + + + + + + + + + + + Group X of XYZ + Control X1 + Control X2 + Control X3 + + + Group Y of XYZ + Control Y1 + Control Y2 + Control Y3 + + + Group Z of XYZ + Control Z1 + Control Z2 + Control Z3 + Control Z3-A + + Control Z3-A-1 + + + + + + + + New Group 1 + + + x1 + y1 + z1 + + + + + New Group 2 + + + x2 + y2 + z2 + + + + + + + + + + New Group 1 + Control X1 + Control Y1 + Control Z1 - - Group Z of XYZ - Control Z1 - Control Z3 - Control Z3-A - Control Z3-A-1 + + New Group 2 + Control X2 + Control Y2 + Control Z2 + + + + + + + + + Group X of XYZ + Control X1 + Control X2 + Control X3 + + + + + Parent of Group Y + + Group Y of XYZ + Control Y1 + Control Y2 + Control Y3 + + + + + Control Z1 + Control Z2 + Control Z3 + Control Z3-A + + Control Z3-A-1 + - + + + + + New Group 1 + + + x1 + y1 + z1 + + + + + New Group 2 + + + x2 + y2 + z2 + + + + + + + + + + New Group 1 + Control X1 + Control Y1 + Control Z1 - - - - Group X of XYZ - - Control X1 - - - Control X2 + + New Group 2 + Control X2 + Control Y2 + Control Z2 - - Group Y of XYZ - Control Y1 - Control Y2 - Control Y3 + + + + + + + Control X1 + Control X2 + Control X3 + + + + + Group A + + + + x2 + + + + + Group B + + + x2 + + + + + + + + + + Group A + Control X1 + Control X3 - - Group Z of XYZ - Control Z3 - Control Z3-A - Control Z3-A-1 - - + + + + Group B + Control X2 + + + + + + + Control X1 + Control X2 + Control X3 + + + + + Group A + + Group A.1 + + + x2 + nonexistent + + + + + + Group B + + Group B.1 + + + q* + + + + + + + + + + + Group A + + Group A.1 + Control X2 + + + + + + Group B + + Group B.1 + + + + + + + + + + + + + Control X1 + Control X2 + Control X3 + + + + + + + x2 + + + + + + + + + Control X3 + + + + + + + Control X1 + Control X2 + Control X3 + + + + + + + nonexistent + + + + + + + + + + + + + Control X3 + Control X1 + Control X2 + + + + + + + Control X2 + Control X1 + Control X3 + + + + + + + + Control X1 + Control X2 + Control X3 + + + + + + + Control X1 + Control X2 + Control X3 + + + + + + + + + Control X1 + Control X2 + Control X3 + + + + + x1 + x3 + ax2 + + + + - - - Control X1 - Control Z1 - Control Z3 - Control Z3-A - Control Z3-A-1 - - - - Control X1 - + + + + + + + + + + + + + + + + a1 + + + + + + + + + + + + + + + + + + + + + nonexistent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a1 + + + + + + + + + + + + + + + + + + + + + + + a1 + + + + + + + + + - Control X2 - Control Y1 - Control Y2 - Control Y3 - Control Z3 - Control Z3-A - Control Z3-A-1 - + + + + + + + + + + + + + + + a1.1 + + + + + + + + + - - + + + + + + + + + + + + + + + a1.1 + + + + + + + + + + + + + + + + x1 + + + diff --git a/src/utils/util/resolver-pipeline/testing/3_merged/merge.xspec b/src/utils/util/resolver-pipeline/testing/3_merged/merge.xspec index c4619ccbea..d9e44c873d 100644 --- a/src/utils/util/resolver-pipeline/testing/3_merged/merge.xspec +++ b/src/utils/util/resolver-pipeline/testing/3_merged/merge.xspec @@ -1,17 +1,57 @@ - - + + + + + + + + text + + + + + + + + + + + + + + - + + + - - + + + + + + + + + + + - - - - + + + + + + + Group X of XYZ Control X1 @@ -36,29 +76,206 @@ - - - - - - Control X1 - Control X2 - Control X3 - Control Y1 - Control Y2 - Control Y3 - Control Z1 - Control Z2 - Control Z3 - Control Z3-A - Control Z3-A-1 + + + + + + Control X1 + Control X2 + Control X3 + Control Y1 + Control Y2 + Control Y3 + Control Z1 + Control Z2 + Control Z3 + Control Z3-A + Control Z3-A-1 + - - - + + + + + + + + + Group X of XYZ + Control X1 + + + Group Z of XYZ + Control Z1 + Control Z3 + Control Z3-A + Control Z3-A-1 + + + + + + + Group X of XYZ + + Control X1 + + + Control X2 + + + Group Y of XYZ + Control Y1 + Control Y2 + Control Y3 + + + Group Z of XYZ + Control Z3 + Control Z3-A + Control Z3-A-1 + + + + + + + + + + Control X1 + Control Z1 + Control Z3 + Control Z3-A + Control Z3-A-1 + + + + Control X1 + + + Control X2 + Control Y1 + Control Y2 + Control Y3 + Control Z3 + Control Z3-A + Control Z3-A-1 + + + + + + + + + + Test Profile + 2019-11-13T12:41:07.061-05:00 + 1.3 + 1.0.2 + + + + + Control X1 + + + + + + +

    at least every 3 years

    +
    +
    +
    +
    +
    +
    + + + + Test Profile + 2019-11-13T12:41:07.061-05:00 + 1.3 + 1.0.2 + + + + Control X1 + + + + +

    at least every 3 years

    +
    +
    +
    +
    +
    +
    +
    + + + + + Control X1 + + + Ref BBB + + Bbb bbbbb Bbb b. + + + + + + + + + Ref AAA + + Aaaa aaaa aaaa + + + + + + + + + Control X1 + + + Ref BBB + + Bbb bbbbb Bbb b. + + + + + Ref AAA + + Aaaa aaaa aaaa + + + + + + + + + 0 + + + + + + - + @@ -66,65 +283,450 @@ Group X of XYZ Control X1 - - Group Z of XYZ - Control Z1 - Control Z3 - Control Z3-A - Control Z3-A-1 - - - - - - - Group X of XYZ - - Control X1 - - - Control X2 - Group Y of XYZ Control Y1 - Control Y2 - Control Y3 - - - Group Z of XYZ - Control Z3 - Control Z3-A - Control Z3-A-1 - - + + {$ov:as-is-content} + - + Control X1 - Control Z1 - Control Z3 - Control Z3-A - Control Z3-A-1 - - - - Control X1 - - - Control X2 Control Y1 - Control Y2 - Control Y3 - Control Z3 - Control Z3-A - Control Z3-A-1 - - + + + + + + + + + + + 1 + + + + + + + + + + + + true + + + + + + + + + + + true + 1 + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + Ref CCC + + + Ref BBB + + + Ref AAA + + + + + + + + + Ref CCC + + + Ref BBB + + + Ref AAA + + + + + + + + + Control X1 + + + Ref CCC + + + Ref BBB + + + + + Control X2 + + + Ref AAA + + + + + + + + + + Ref CCC + + + Ref BBB + + + Ref AAA + + + + + + + + + Control X1 + + + Ref CCC + + + Ref BBB, first + + + Ref AAA + + + + + Control X2 + + + Ref CCC + + + Ref BBB, second + + + Ref AAA + + + + + + Ref CCC + + + Ref BBB, third + + + Ref AAA + + + + + + + + + Ref CCC + + + Ref BBB, third + + + Ref AAA + + + Ref CCC + + + Ref CCC + + + + + + + + + + + + + + + + + + + + + + + + + + + no control + + + Group X of XYZ + + + no control + + + + no control + + + Group X2 + + + no control + + + + no control + + + + + + + + + + no control + + + + no control + + + + no control + + + + no control + + + + no control + + + + + + + + Control A + + Group X of XYZ + Control X1 + Control Y1 + + Group X2 + Control X2 + Control Y2 + + + + + + + Control A + Control X1 + Control Y1 + Control X2 + Control Y2 + + + + + + + + + no control + + Control A + + Group X of XYZ + + + no control + + Control X1 + + + + + + ... + ... + ... + ... + + + + + + + + + Control X1 + + + + + + Control X1 + + + + + + + + + + + + + + + + + + + + + Control X1 + + + + + + + + + + + + + + + + + + + + + + + Control X1 + + + + + + + + + + + + + + + + + + + + + + + Control X1 + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/src/utils/util/resolver-pipeline/uuid-method-choice.xsl b/src/utils/util/resolver-pipeline/uuid-method-choice.xsl new file mode 100644 index 0000000000..97c028fb55 --- /dev/null +++ b/src/utils/util/resolver-pipeline/uuid-method-choice.xsl @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$ + 00000000-0000-4000-B000-000000000000 + + + + + + + + Warning + top-uuid value, '{$top-uuid}', does not meet UUID requirements. Using default UUID instead. + + + + + + + + + + + + + + Warning + uuid-method, '{$uuid-method}', is not available. Using default UUID instead. + + + + + + + + + Warning + uuid-service, '{$uuid-service}', is not available. Using default UUID instead. + + + + + + + + + Warning + uuid-method, '{$uuid-method}', is not recognized. Using default UUID instead. + + + + + + + \ No newline at end of file diff --git a/xml/schema/oscal_complete_schema.xsd b/xml/schema/oscal_complete_schema.xsd index 0ed7f73115..41569c3f27 100644 --- a/xml/schema/oscal_complete_schema.xsd +++ b/xml/schema/oscal_complete_schema.xsd @@ -1847,7 +1847,7 @@ - + diff --git a/xml/schema/oscal_profile_schema.xsd b/xml/schema/oscal_profile_schema.xsd index e27d43d1e0..9337de97f1 100644 --- a/xml/schema/oscal_profile_schema.xsd +++ b/xml/schema/oscal_profile_schema.xsd @@ -154,7 +154,7 @@ - +