1#![deny(missing_docs)]
38
39pub fn resolve_namespace(uri: &str) -> Option<(&'static str, &'static str)> {
56 NAMESPACE_TO_PACKAGE
57 .binary_search_by_key(&uri, |&(ns, _, _)| ns)
58 .ok()
59 .map(|i| (NAMESPACE_TO_PACKAGE[i].1, NAMESPACE_TO_PACKAGE[i].2))
60}
61
62pub fn package_for_namespace(uri: &str) -> Option<&'static str> {
64 resolve_namespace(uri).map(|(pkg, _)| pkg)
65}
66
67pub fn relpath_for_namespace(uri: &str) -> Option<&'static str> {
69 resolve_namespace(uri).map(|(_, rel)| rel)
70}
71
72pub fn known_namespaces() -> impl Iterator<Item = (&'static str, &'static str, &'static str)> {
74 NAMESPACE_TO_PACKAGE.iter().copied()
75}
76
77pub fn crate_name_for(package: &str) -> Option<String> {
82 if PACKAGES.contains(&package) {
83 Some(format!("ism-{}", package.to_ascii_lowercase()))
84 } else {
85 None
86 }
87}
88
89pub fn is_published(package: &str) -> bool {
95 PUBLISHED_PACKAGES.binary_search(&package).is_ok()
96}
97
98pub fn resolve_namespace_published(uri: &str) -> Option<(&'static str, &'static str)> {
109 let (pkg, rel) = resolve_namespace(uri)?;
110 is_published(pkg).then_some((pkg, rel))
111}
112
113pub const PACKAGES: &[&str] = &[
118 "ADD-ERM",
119 "ARH",
120 "ATOM",
121 "AUDIT",
122 "AUTHCAT",
123 "BASE-TDF",
124 "BOE",
125 "BRK-SRCH",
126 "CDR-RA",
127 "CDSM",
128 "CDSM-TDF",
129 "CEM",
130 "CSR",
131 "DED",
132 "DELIVER",
133 "DHZM",
134 "DHZM-TDF",
135 "DHZMC-TDF",
136 "DOMEX",
137 "ERM",
138 "FAC",
139 "FSD",
140 "IC-Docbook",
141 "IC-EDH",
142 "IC-GENC",
143 "IC-ID",
144 "IC-SF",
145 "ICO-ACES",
146 "ICO-NTK",
147 "INTDIS",
148 "IRM",
149 "ISM-ACES",
150 "ISM-Rollup",
151 "ISMCAT",
152 "ITS-MS",
153 "ITS-OM",
154 "LIC",
155 "MAC",
156 "MANAGE",
157 "MIME",
158 "MN",
159 "MNT",
160 "NTK",
161 "NTK-ACES",
162 "OC-NTK-ACES",
163 "PM",
164 "PMA",
165 "QM",
166 "ROLE",
167 "RR-ID",
168 "RR-SM",
169 "RevRecall",
170 "UIAS",
171 "UIAS-APCS",
172 "USAgency",
173 "VIRT",
174 "WSS-HLG",
175 "WSS-SIGENC",
176 "Whitelist",
177];
178
179pub const PUBLISHED_PACKAGES: &[&str] = &[
188 "ISMCAT",
189];
190const NAMESPACE_TO_PACKAGE: &[(&str, &str, &str)] = &[
195 ("http://docbook.org/ns/docbook", "IC-Docbook", "XSL/IC-Docbook/docbook-xsl-1.79.2/slides/schema/xsd/docbook.xsd"),
196 ("http://docbook.org/ns/docbook-slides", "IC-Docbook", "XSL/IC-Docbook/docbook-xsl-1.79.2/slides/schema/xsd/slides.xsd"),
197 ("http://metadata.dod.mil/mdr/ns/DDMS/3.0/", "AUDIT", "CVE/Schema/DDMS/DDMS-GeospatialCoverage.xsd"),
198 ("http://www.opengis.net/gml/3.2", "AUDIT", "CVE/Schema/DDMS/DDMS-GML-Profile.xsd"),
199 ("http://www.w3.org/1999/xlink", "AUDIT", "Schema/XLINK/XLink.xsd"),
200 ("http://www.w3.org/2001/SMIL20/", "RR-SM", "Schema/w3/2001/SMIL20/smil20-4gml.xsd"),
201 ("http://www.w3.org/2001/SMIL20/Language", "RR-SM", "Schema/w3/2001/SMIL20/smil20-language-4gml.xsd"),
202 ("http://www.w3.org/XML/1998/namespace", "AUDIT", "Schema/W3C-XML/W3C-XML-Namespace.xsd"),
203 ("urn:CellexReport", "DOMEX", "Schema/DOMEX/CellexReport.xsd"),
204 ("urn:schema:guide:schema:cdsmanifest", "CDSM", "Schema/CDSM/SchemaGuideSchema.xsd"),
205 ("urn:schema:guide:schema:digitalhazmat", "DHZM", "Schema/DHZM/SchemaGuideSchema.xsd"),
206 ("urn:schema:guide:schema:irm", "IRM", "Schema/IRM/SchemaGuideSchema.xsd"),
207 ("urn:schema:guide:schema:ismcat", "ISMCAT", "Schema/ISMCAT/SchemaGuideSchema.xsd"),
208 ("urn:schema:guide:schema:its", "ITS-MS", "Schema/ITS-MS/SchemaGuideSchema.xsd"),
209 ("urn:schema:guide:schema:mac", "MAC", "Schema/MAC/SchemaGuideSchema.xsd"),
210 ("urn:schema:guide:schema:pma", "PMA", "Schema/PMA/SchemaGuideSchema.xsd"),
211 ("urn:schema:guide:schema:pubs", "MNT", "Schema/MNT/SchemaGuideSchema.xsd"),
212 ("urn:schema:guide:schema:rr", "RevRecall", "Schema/RevRecall/SchemaGuideSchema.xsd"),
213 ("urn:us:gov:ic:arh", "ARH", "Schema/ARH/IC-ARH.xsd"),
214 ("urn:us:gov:ic:audit", "AUDIT", "Schema/AUDIT/IC-AUDIT.xsd"),
215 ("urn:us:gov:ic:audit-cvenum", "AUDIT", "Schema/AUDIT/CVEGeneratedTypes.xsd"),
216 ("urn:us:gov:ic:authcat", "AUTHCAT", "Schema/AUTHCAT/AuthorityCategory.xsd"),
217 ("urn:us:gov:ic:boe", "BOE", "Schema/BOE/BOE.xsd"),
218 ("urn:us:gov:ic:cdsmanifest", "CDSM", "Schema/CDSM/CDSM-guard.xsd"),
219 ("urn:us:gov:ic:cem", "CEM", "Schema/CEM/CEM-XML.xsd"),
220 ("urn:us:gov:ic:common", "AUDIT", "Schema/IC-COMMON/IC-Common.xsd"),
221 ("urn:us:gov:ic:cve", "AUTHCAT", "CVE/CveSchema/CVEXml.xsd"),
222 ("urn:us:gov:ic:cve:v1", "AUDIT", "CVE/Schema/CVEXml.xsd"),
223 ("urn:us:gov:ic:cvenum:authcat:authcattype", "AUTHCAT", "Schema/AUTHCAT/CVEGenerated/CVEnumAuthCatType.xsd"),
224 ("urn:us:gov:ic:cvenum:boe:CVEnumBOEAuthorizationType", "BOE", "Schema/BOE/CVEGenerated/CVEnumBOEAuthorizationType.xsd"),
225 ("urn:us:gov:ic:cvenum:boe:CVEnumBOEInformationTechnologyType", "BOE", "Schema/BOE/CVEGenerated/CVEnumBOEInformationTechnologyType.xsd"),
226 ("urn:us:gov:ic:cvenum:boe:CVEnumBOESoftwareCategory", "BOE", "Schema/BOE/CVEGenerated/CVEnumBOESoftwareCategory.xsd"),
227 ("urn:us:gov:ic:cvenum:boe:CVEnumBOESystemOwnershipType", "BOE", "Schema/BOE/CVEGenerated/CVEnumBOESystemOwnershipType.xsd"),
228 ("urn:us:gov:ic:cvenum:boe:CVEnumBOESystemUserCategory", "BOE", "Schema/BOE/CVEGenerated/CVEnumBOESystemUserCategory.xsd"),
229 ("urn:us:gov:ic:cvenum:cemxml:citycategory", "CEM", "Schema/CEM/CVEGenerated/CVEnumCemCityCategory.xsd"),
230 ("urn:us:gov:ic:cvenum:cemxml:commdatatype", "CEM", "Schema/CEM/CVEGenerated/CVEnumCemCommDataType.xsd"),
231 ("urn:us:gov:ic:cvenum:cemxml:identifiertype", "CEM", "Schema/CEM/CVEGenerated/CVEnumCemIdentifierType.xsd"),
232 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXActivityCombatOperations", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXActivityCombatOperations.xsd"),
233 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXActivityCommunications", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXActivityCommunications.xsd"),
234 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXActivityCriminalActivities", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXActivityCriminalActivities.xsd"),
235 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXActivityFinance", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXActivityFinance.xsd"),
236 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXActivityHostageOperations", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXActivityHostageOperations.xsd"),
237 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXActivityIndividual", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXActivityIndividual.xsd"),
238 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXActivityPersonnelManagement", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXActivityPersonnelManagement.xsd"),
239 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXActivityPlanningGeneral", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXActivityPlanningGeneral.xsd"),
240 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXActivityPropagandaProductionandDistribution", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXActivityPropagandaProductionandDistribution.xsd"),
241 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXActivityRecruitmentOperations", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXActivityRecruitmentOperations.xsd"),
242 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXActivityReligious", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXActivityReligious.xsd"),
243 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXActivityType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXActivityType.xsd"),
244 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXActivityWeaponsCyber", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXActivityWeaponsCyber.xsd"),
245 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXActivityWeaponsImprovised", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXActivityWeaponsImprovised.xsd"),
246 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXActivityWeaponsManufactured", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXActivityWeaponsManufactured.xsd"),
247 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXActivityWeaponsofMassDestruction", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXActivityWeaponsofMassDestruction.xsd"),
248 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXAffiliationTypeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXAffiliationTypeType.xsd"),
249 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXAgencyCIA", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXAgencyCIA.xsd"),
250 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXAgencyDHS", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXAgencyDHS.xsd"),
251 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXAgencyDIA", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXAgencyDIA.xsd"),
252 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXAgencyDOD", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXAgencyDOD.xsd"),
253 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXAgencyDOJ", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXAgencyDOJ.xsd"),
254 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXAgencyFBI", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXAgencyFBI.xsd"),
255 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXAgencyNSA", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXAgencyNSA.xsd"),
256 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXAgencyOtherUSG", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXAgencyOtherUSG.xsd"),
257 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXAgencyUSA", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXAgencyUSA.xsd"),
258 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXAgencyUSAF", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXAgencyUSAF.xsd"),
259 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXAgencyUSMC", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXAgencyUSMC.xsd"),
260 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXAgencyUSN", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXAgencyUSN.xsd"),
261 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXCitizenshipStatusType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXCitizenshipStatusType.xsd"),
262 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXCollectingUnitIDTypeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXCollectingUnitIDTypeType.xsd"),
263 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXDispositionType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXDispositionType.xsd"),
264 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXDocumentType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXDocumentType.xsd"),
265 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXEducationDegreeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXEducationDegreeType.xsd"),
266 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXEducationLevelType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXEducationLevelType.xsd"),
267 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXEntityMethodOfExtractionType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXEntityMethodOfExtractionType.xsd"),
268 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXEventTypeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXEventTypeType.xsd"),
269 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXFileType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXFileType.xsd"),
270 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXFinancialAccountTypeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXFinancialAccountTypeType.xsd"),
271 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXFinancialTransactionTypeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXFinancialTransactionTypeType.xsd"),
272 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXFisaType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXFisaType.xsd"),
273 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXFlightTypeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXFlightTypeType.xsd"),
274 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXHashDigestTypeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXHashDigestTypeType.xsd"),
275 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXImageSizeTypeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXImageSizeTypeType.xsd"),
276 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXLegalTitleType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXLegalTitleType.xsd"),
277 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXLicenseTypeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXLicenseTypeType.xsd"),
278 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXMediaType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXMediaType.xsd"),
279 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXMembershipIdentificationTypeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXMembershipIdentificationTypeType.xsd"),
280 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXMicroCollectionLocationDescriptorTypeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXMicroCollectionLocationDescriptorTypeType.xsd"),
281 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXNumberOfFilesTypeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXNumberOfFilesTypeType.xsd"),
282 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXOrganizationNameTypeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXOrganizationNameTypeType.xsd"),
283 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXOrganizationTypeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXOrganizationTypeType.xsd"),
284 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXPhysicalAttributeTypeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXPhysicalAttributeTypeType.xsd"),
285 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXRelationshipNatureType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXRelationshipNatureType.xsd"),
286 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXRelationshipTypeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXRelationshipTypeType.xsd"),
287 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXTitleTypeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXTitleTypeType.xsd"),
288 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXTranslationPriorityType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXTranslationPriorityType.xsd"),
289 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXTranslationStatusType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXTranslationStatusType.xsd"),
290 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXTranslationType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXTranslationType.xsd"),
291 ("urn:us:gov:ic:cvenum:domex:CVEnumDOMEXTravelTypeType", "DOMEX", "Schema/DOMEX/CVEGenerated/CVEnumDOMEXTravelTypeType.xsd"),
292 ("urn:us:gov:ic:cvenum:erm:holdCategory", "ERM", "Schema/ERM/CVEGenerated/CVEnumERMHoldCategory.xsd"),
293 ("urn:us:gov:ic:cvenum:fac:fineaccesscontroltype", "FAC", "Schema/FAC/CVEGenerated/CVEnumFineAccessControlType.xsd"),
294 ("urn:us:gov:ic:cvenum:genc:country", "IC-GENC", "Schema/IC-GENC/CVEGenerated/CVEnumGENCCountryCode.xsd"),
295 ("urn:us:gov:ic:cvenum:genc:country:33", "IC-GENC", "Schema/IC-GENC/CVEGenerated/CVEnumGeGENC3ed3.xsd"),
296 ("urn:us:gov:ic:cvenum:genc:country:331", "IC-GENC", "Schema/IC-GENC/CVEGenerated/CVEnumGeGENC33-1.xsd"),
297 ("urn:us:gov:ic:cvenum:genc:country:3310", "IC-GENC", "Schema/IC-GENC/CVEGenerated/CVEnumGeGENC33-10.xsd"),
298 ("urn:us:gov:ic:cvenum:genc:country:3311", "IC-GENC", "Schema/IC-GENC/CVEGenerated/CVEnumGeGENC33-11.xsd"),
299 ("urn:us:gov:ic:cvenum:genc:country:332", "IC-GENC", "Schema/IC-GENC/CVEGenerated/CVEnumGeGENC33-2.xsd"),
300 ("urn:us:gov:ic:cvenum:genc:country:333", "IC-GENC", "Schema/IC-GENC/CVEGenerated/CVEnumGeGENC33-3.xsd"),
301 ("urn:us:gov:ic:cvenum:genc:country:334", "IC-GENC", "Schema/IC-GENC/CVEGenerated/CVEnumGeGENC33-4.xsd"),
302 ("urn:us:gov:ic:cvenum:genc:country:335", "IC-GENC", "Schema/IC-GENC/CVEGenerated/CVEnumGeGENC33-5.xsd"),
303 ("urn:us:gov:ic:cvenum:genc:country:336", "IC-GENC", "Schema/IC-GENC/CVEGenerated/CVEnumGeGENC33-6.xsd"),
304 ("urn:us:gov:ic:cvenum:genc:country:337", "IC-GENC", "Schema/IC-GENC/CVEGenerated/CVEnumGeGENC33-7.xsd"),
305 ("urn:us:gov:ic:cvenum:genc:country:338", "IC-GENC", "Schema/IC-GENC/CVEGenerated/CVEnumGeGENC33-8.xsd"),
306 ("urn:us:gov:ic:cvenum:genc:country:339", "IC-GENC", "Schema/IC-GENC/CVEGenerated/CVEnumGeGENC33-9.xsd"),
307 ("urn:us:gov:ic:cvenum:genc:subdivision", "IC-GENC", "Schema/IC-GENC/CVEGenerated/CVEnumGENCSubDivisionCode.xsd"),
308 ("urn:us:gov:ic:cvenum:intdis:inteldiscipline", "INTDIS", "Schema/INTDIS/CVEGenerated/CVEnumIntelDiscipline.xsd"),
309 ("urn:us:gov:ic:cvenum:intdis:inteldiscipline:component", "INTDIS", "Schema/INTDIS/CVEGenerated/CVEnumIntelDisciplineComponent.xsd"),
310 ("urn:us:gov:ic:cvenum:intdis:inteldiscipline:component:technique", "INTDIS", "Schema/INTDIS/CVEGenerated/CVEnumIntelDisciplineComponentTechnique.xsd"),
311 ("urn:us:gov:ic:cvenum:irm:activity", "IRM", "Schema/IRM/CVEGenerated/CVEnumIRMActivity.xsd"),
312 ("urn:us:gov:ic:cvenum:irm:complies:usa", "IRM", "Schema/IRM/CVEGenerated/CVEnumIRMCompliesWithUSA.xsd"),
313 ("urn:us:gov:ic:cvenum:irm:coverage:iso3166:digraph", "IRM", "Schema/IRM/CVEGenerated/CVEnumIRMCoverageISO3166Digraph.xsd"),
314 ("urn:us:gov:ic:cvenum:irm:coverage:precedence", "IRM", "Schema/IRM/CVEGenerated/CVEnumIRMCoveragePrecedence.xsd"),
315 ("urn:us:gov:ic:cvenum:irm:executableindicator", "IRM", "Schema/IRM/CVEGenerated/CVEnumIRMExecutableIndicator.xsd"),
316 ("urn:us:gov:ic:cvenum:irm:iso639-2:trigraph", "IRM", "Schema/IRM/CVEGenerated/CVEnumIRMISO639-2Trigraph.xsd"),
317 ("urn:us:gov:ic:cvenum:irm:iso639-3:trigraph", "IRM", "Schema/IRM/CVEGenerated/CVEnumIRMISO639-3Trigraph.xsd"),
318 ("urn:us:gov:ic:cvenum:irm:iso639:digraph", "IRM", "Schema/IRM/CVEGenerated/CVEnumIRMISO639Digraph.xsd"),
319 ("urn:us:gov:ic:cvenum:irm:language:qualifier", "IRM", "Schema/IRM/CVEGenerated/CVEnumIRMCompoundLanguageQualifierType.xsd"),
320 ("urn:us:gov:ic:cvenum:irm:maliciouscodeindicator", "IRM", "Schema/IRM/CVEGenerated/CVEnumIRMMaliciousCodeIndicator.xsd"),
321 ("urn:us:gov:ic:cvenum:irm:positive:intel", "IRM", "Schema/IRM/CVEGenerated/CVEnumIRMPositiveIntel.xsd"),
322 ("urn:us:gov:ic:cvenum:irm:waterBody", "IRM", "Schema/IRM/CVEGenerated/CVEnumIRMWaterBody.xsd"),
323 ("urn:us:gov:ic:cvenum:ism:25x", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISM25X.xsd"),
324 ("urn:us:gov:ic:cvenum:ism:HighWaterNATO", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMHighWaterNATO.xsd"),
325 ("urn:us:gov:ic:cvenum:ism:atomicEnergyMarkings", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMAtomicEnergyMarkings.xsd"),
326 ("urn:us:gov:ic:cvenum:ism:attributes", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMAttributes.xsd"),
327 ("urn:us:gov:ic:cvenum:ism:classification:all", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMClassificationAll.xsd"),
328 ("urn:us:gov:ic:cvenum:ism:classification:us", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMClassificationUS.xsd"),
329 ("urn:us:gov:ic:cvenum:ism:complieswith", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMCompliesWith.xsd"),
330 ("urn:us:gov:ic:cvenum:ism:cuibasic", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMCUIBasic.xsd"),
331 ("urn:us:gov:ic:cvenum:ism:cuispecified", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMCUISpecified.xsd"),
332 ("urn:us:gov:ic:cvenum:ism:dissem", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMDissem.xsd"),
333 ("urn:us:gov:ic:cvenum:ism:dissem:commingled", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMDissemCommingled.xsd"),
334 ("urn:us:gov:ic:cvenum:ism:dissem:cui", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMDissemCui.xsd"),
335 ("urn:us:gov:ic:cvenum:ism:dissem:icrm", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMDissemIcrm.xsd"),
336 ("urn:us:gov:ic:cvenum:ism:elements", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMElements.xsd"),
337 ("urn:us:gov:ic:cvenum:ism:exemptfrom", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMExemptFrom.xsd"),
338 ("urn:us:gov:ic:cvenum:ism:fgiopen", "RR-SM", "Schema/ISM/CVEGenerated/CVEnumISMFGIOpen.xsd"),
339 ("urn:us:gov:ic:cvenum:ism:fgiprotected", "RR-SM", "Schema/ISM/CVEGenerated/CVEnumISMFGIProtected.xsd"),
340 ("urn:us:gov:ic:cvenum:ism:nonic", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMNonIC.xsd"),
341 ("urn:us:gov:ic:cvenum:ism:nonuscontrols", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMNonUSControls.xsd"),
342 ("urn:us:gov:ic:cvenum:ism:notice", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMNotice.xsd"),
343 ("urn:us:gov:ic:cvenum:ism:noticeprose", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMNoticeProse.xsd"),
344 ("urn:us:gov:ic:cvenum:ism:ownerproducer", "RR-SM", "Schema/ISM/CVEGenerated/CVEnumISMOwnerProducer.xsd"),
345 ("urn:us:gov:ic:cvenum:ism:pocType", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMPocType.xsd"),
346 ("urn:us:gov:ic:cvenum:ism:relto", "RR-SM", "Schema/ISM/CVEGenerated/CVEnumISMRelTo.xsd"),
347 ("urn:us:gov:ic:cvenum:ism:sar", "FAC", "Schema/FAC/CVEGenerated/CVEnumFACSARAuthorities.xsd"),
348 ("urn:us:gov:ic:cvenum:ism:scicontrols", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMSCIControls.xsd"),
349 ("urn:us:gov:ic:cvenum:ism:secondbannerline", "AUTHCAT", "CVE/CveSchema/ISM/CVEGenerated/CVEnumISMSecondBannerLine.xsd"),
350 ("urn:us:gov:ic:cvenum:ismcat:fgiopen", "ISMCAT", "Schema/ISMCAT/CVEGenerated/CVEnumISMCATFGIOpen.xsd"),
351 ("urn:us:gov:ic:cvenum:ismcat:fgiprotected", "ISMCAT", "Schema/ISMCAT/CVEGenerated/CVEnumISMCATFGIProtected.xsd"),
352 ("urn:us:gov:ic:cvenum:ismcat:ownerproducer", "ISMCAT", "Schema/ISMCAT/CVEGenerated/CVEnumISMCATOwnerProducer.xsd"),
353 ("urn:us:gov:ic:cvenum:ismcat:relto", "ISMCAT", "Schema/ISMCAT/CVEGenerated/CVEnumISMCATRelTo.xsd"),
354 ("urn:us:gov:ic:cvenum:ismcat:responsibleentity", "ISMCAT", "Schema/ISMCAT/CVEGenerated/CVEnumISMCATResponsibleEntity.xsd"),
355 ("urn:us:gov:ic:cvenum:ismcat:tetragraph", "ISMCAT", "Schema/ISMCAT/CVEGenerated/CVEnumISMCATTetragraph.xsd"),
356 ("urn:us:gov:ic:cvenum:itsms:fabric", "ITS-MS", "Schema/ITS-MS/CVEGenerated/CVEnumITSMSFabric.xsd"),
357 ("urn:us:gov:ic:cvenum:lic:license", "LIC", "Schema/LIC/CVEGenerated/CVEnumLicLicense.xsd"),
358 ("urn:us:gov:ic:cvenum:mac:collectionType", "MAC", "Schema/MAC/CVEGenerated/CVEnumMacCollectionType.xsd"),
359 ("urn:us:gov:ic:cvenum:mime:type", "MIME", "Schema/MIME/CVEGenerated/CVEnumMIMEIANAType.xsd"),
360 ("urn:us:gov:ic:cvenum:mn:issue", "MN", "Schema/MN/CVEGenerated/CVEnumMNIssue.xsd"),
361 ("urn:us:gov:ic:cvenum:mn:region", "MN", "Schema/MN/CVEGenerated/CVEnumMNRegion.xsd"),
362 ("urn:us:gov:ic:cvenum:ntk:accesspolicy", "NTK", "Schema/NTK/CVEGenerated/CVEnumNTKAccessPolicy.xsd"),
363 ("urn:us:gov:ic:cvenum:ntk:profiledes", "NTK", "Schema/NTK/CVEGenerated/CVEnumNTKProfileDes.xsd"),
364 ("urn:us:gov:ic:cvenum:pm:actor", "PM", "Schema/PM/CVEGenerated/CVEnumPMActor.xsd"),
365 ("urn:us:gov:ic:cvenum:pm:location", "PM", "Schema/PM/CVEGenerated/CVEnumPMLocation.xsd"),
366 ("urn:us:gov:ic:cvenum:pm:nonstateactors", "PM", "Schema/PM/CVEGenerated/CVEnumPMNonStateActors.xsd"),
367 ("urn:us:gov:ic:cvenum:pm:subject", "PM", "Schema/PM/CVEGenerated/CVEnumPMSubject.xsd"),
368 ("urn:us:gov:ic:cvenum:revrecall:action", "RevRecall", "Schema/RevRecall/CVEGenerated/CVEnumRevRecallAction.xsd"),
369 ("urn:us:gov:ic:cvenum:revrecall:type", "RevRecall", "Schema/RevRecall/CVEGenerated/CVEnumRevRecallType.xsd"),
370 ("urn:us:gov:ic:cvenum:role:c2sfunction", "ROLE", "Schema/ROLE/CVEGenerated/CVEnumROLEC2SFunction.xsd"),
371 ("urn:us:gov:ic:cvenum:role:c2sscope", "ROLE", "Schema/ROLE/CVEGenerated/CVEnumROLEC2SScope.xsd"),
372 ("urn:us:gov:ic:cvenum:role:enterprise:role", "ROLE", "Schema/ROLE/CVEGenerated/CVEnumROLEEnterpriseRole.xsd"),
373 ("urn:us:gov:ic:cvenum:role:namespace", "ROLE", "Schema/ROLE/CVEGenerated/CVEnumROLENamespace.xsd"),
374 ("urn:us:gov:ic:cvenum:role:nebula:namedrole", "ROLE", "Schema/ROLE/CVEGenerated/CVEnumROLENebulaNamedRole.xsd"),
375 ("urn:us:gov:ic:cvenum:role:paasfunction", "ROLE", "Schema/ROLE/CVEGenerated/CVEnumROLEPAASFunction.xsd"),
376 ("urn:us:gov:ic:cvenum:role:paasscope", "ROLE", "Schema/ROLE/CVEGenerated/CVEnumROLEPAASScope.xsd"),
377 ("urn:us:gov:ic:cvenum:tdf:hashalgorithm", "BASE-TDF", "Schema/BASE-TDF/CVEGenerated/CVEnumTDFHashAlgorithm.xsd"),
378 ("urn:us:gov:ic:cvenum:tdf:signaturealgorithm", "BASE-TDF", "Schema/BASE-TDF/CVEGenerated/CVEnumTDFSignatureAlgorithm.xsd"),
379 ("urn:us:gov:ic:cvenum:tdf:state", "BASE-TDF", "Schema/BASE-TDF/CVEGenerated/CVEnumTDFAppliesToState.xsd"),
380 ("urn:us:gov:ic:cvenum:uias:attribute", "UIAS", "Schema/UIAS/CVEGenerated/CVEnumUIASAttribute.xsd"),
381 ("urn:us:gov:ic:cvenum:uias:certificateauthority", "UIAS", "Schema/UIAS/CVEGenerated/CVEnumUIASCertificateAuthority.xsd"),
382 ("urn:us:gov:ic:cvenum:uias:clearance", "UIAS", "Schema/UIAS/CVEGenerated/CVEnumUIASClearance.xsd"),
383 ("urn:us:gov:ic:cvenum:uias:entitytype", "UIAS", "Schema/UIAS/CVEGenerated/CVEnumUIASEntityType.xsd"),
384 ("urn:us:gov:ic:cvenum:uias:handlingControls", "UIAS", "Schema/UIAS/CVEGenerated/CVEnumUIASHandlingControls.xsd"),
385 ("urn:us:gov:ic:cvenum:uias:lifecyclestatus", "UIAS", "Schema/UIAS/CVEGenerated/CVEnumUIASLifeCycleStatus.xsd"),
386 ("urn:us:gov:ic:cvenum:uias:nonpersonentitytype", "UIAS", "Schema/UIAS/CVEGenerated/CVEnumUIASNonPersonEntityType.xsd"),
387 ("urn:us:gov:ic:cvenum:uias:personentitytype", "UIAS", "Schema/UIAS/CVEGenerated/CVEnumUIASPersonEntityType.xsd"),
388 ("urn:us:gov:ic:cvenum:uias:schematype", "UIAS", "Schema/UIAS/CVEGenerated/CVEnumUIASSchemaType.xsd"),
389 ("urn:us:gov:ic:cvenum:uias:securitymarktype", "UIAS", "Schema/UIAS/CVEGenerated/CVEnumUIASSecurityMarkType.xsd"),
390 ("urn:us:gov:ic:cvenum:unece20:measure", "DED", "Schema/DED/CVEGenerated/CVEnumUNECE20UnitsOfMeasure.xsd"),
391 ("urn:us:gov:ic:cvenum:usagency:agencyacronym", "USAgency", "Schema/USAgency/CVEGenerated/CVEnumUSAgencyAcronym.xsd"),
392 ("urn:us:gov:ic:cvenum:usagency:auditRoutingOrganization", "USAgency", "Schema/USAgency/CVEGenerated/CVEnumAuditRoutingOrg.xsd"),
393 ("urn:us:gov:ic:cvenum:usagency:auditRoutingUnique", "USAgency", "Schema/USAgency/CVEGenerated/CVEnumAuditRoutingUnique.xsd"),
394 ("urn:us:gov:ic:cvenum:usagency:usgovagencyacronym", "USAgency", "Schema/USAgency/CVEGenerated/CVEnumUSGOVAgencyAcronym.xsd"),
395 ("urn:us:gov:ic:cvenum:virt:network", "VIRT", "Schema/VIRT/CVEGenerated/CVEnumVIRTNetworkName.xsd"),
396 ("urn:us:gov:ic:ded", "DED", "Schema/DED/DED.xsd"),
397 ("urn:us:gov:ic:digitalhazmat", "DHZM", "Schema/DHZM/DHZM-guard.xsd"),
398 ("urn:us:gov:ic:edh", "IC-EDH", "Schema/IC-EDH/IC-EDH.xsd"),
399 ("urn:us:gov:ic:erm", "ERM", "Schema/ERM/ERM_XML.xsd"),
400 ("urn:us:gov:ic:fineaccesscontrol", "FAC", "Schema/FAC/FineAccessControl.xsd"),
401 ("urn:us:gov:ic:icgenc", "IC-GENC", "Schema/IC-GENC/IC-GENC.xsd"),
402 ("urn:us:gov:ic:icms", "ITS-OM", "Schema/ITS-OM/ITS-OM.xsd"),
403 ("urn:us:gov:ic:id", "IC-ID", "Schema/IC-ID/IC-ID.xsd"),
404 ("urn:us:gov:ic:intdis", "INTDIS", "Schema/INTDIS/IntelDiscipline.xsd"),
405 ("urn:us:gov:ic:irm", "IRM", "Schema/IRM/IC-IRM.xsd"),
406 ("urn:us:gov:ic:ism", "AUTHCAT", "CVE/CveSchema/ISM/IC-ISM.xsd"),
407 ("urn:us:gov:ic:its", "ITS-MS", "Schema/ITS-MS/ITS-MS.xsd"),
408 ("urn:us:gov:ic:lic", "LIC", "Schema/LIC/LIC.xsd"),
409 ("urn:us:gov:ic:mac", "MAC", "Schema/MAC/MAC-XML.xsd"),
410 ("urn:us:gov:ic:mime", "MIME", "Schema/MIME/MIME.xsd"),
411 ("urn:us:gov:ic:mn", "MN", "Schema/MN/MN.xsd"),
412 ("urn:us:gov:ic:ntk", "NTK", "Schema/NTK/IC-NTK.xsd"),
413 ("urn:us:gov:ic:pm", "PM", "Schema/PM/PM.xsd"),
414 ("urn:us:gov:ic:pma", "PMA", "Schema/PMA/PMA-XML.xsd"),
415 ("urn:us:gov:ic:revrecall", "RevRecall", "Schema/RevRecall/RevRecall_XML.xsd"),
416 ("urn:us:gov:ic:role", "ROLE", "Schema/ROLE/ROLE.xsd"),
417 ("urn:us:gov:ic:rr", "RR-SM", "Schema/RR-SM/IC-RR-SM-REST.xsd"),
418 ("urn:us:gov:ic:sf", "IC-SF", "Schema/IC-SF/IC-SF.xsd"),
419 ("urn:us:gov:ic:sf:hashverification", "IC-SF", "Schema/IC-SF/HashVerification.xsd"),
420 ("urn:us:gov:ic:taxonomy:catt:tetragraph", "ISMCAT", "Schema/ISMCAT/Tetragraph.xsd"),
421 ("urn:us:gov:ic:taxonomy:mnt:issue", "MNT", "Schema/MNT/Issue.xsd"),
422 ("urn:us:gov:ic:taxonomy:mnt:region", "MNT", "Schema/MNT/Region.xsd"),
423 ("urn:us:gov:ic:tdf", "BASE-TDF", "Schema/BASE-TDF/BASE-TDF.xsd"),
424 ("urn:us:gov:ic:uias", "UIAS", "Schema/UIAS/UIAS.xsd"),
425 ("urn:us:gov:ic:uiassaml", "UIAS", "Schema/UIAS/UIAS_SAML.xsd"),
426 ("urn:us:gov:ic:usagency", "USAgency", "Schema/USAgency/USAgency.xsd"),
427 ("urn:us:gov:ic:virt", "VIRT", "Schema/VIRT/VIRT.xsd"),
428 ("urn:us:mil:ces:metadata:domex", "DOMEX", "Schema/DOMEX/DOMEX.xsd"),
429 ("urn:us:mil:ces:metadata:domex_identity", "DOMEX", "Schema/DOMEX/Identity.xsd"),
430];
431
432#[cfg(test)]
435mod tests {
436 use super::*;
437
438 #[test]
439 fn packages_table_has_59_entries() {
440 assert_eq!(PACKAGES.len(), 59);
441 }
442
443 #[test]
444 fn namespace_table_is_sorted() {
445 for w in NAMESPACE_TO_PACKAGE.windows(2) {
446 assert!(
447 w[0].0 < w[1].0,
448 "namespace table not sorted: {} >= {}",
449 w[0].0,
450 w[1].0
451 );
452 }
453 }
454
455 #[test]
456 fn every_namespace_package_is_in_packages_list() {
457 for &(uri, pkg, _) in NAMESPACE_TO_PACKAGE {
458 assert!(
459 PACKAGES.contains(&pkg),
460 "namespace {uri} references unknown package {pkg}",
461 );
462 }
463 }
464
465 #[test]
466 fn resolve_known_namespace() {
467 let (pkg, rel) = resolve_namespace("urn:us:gov:ic:edh").unwrap();
468 assert_eq!(pkg, "IC-EDH");
469 assert_eq!(rel, "Schema/IC-EDH/IC-EDH.xsd");
470 }
471
472 #[test]
473 fn resolve_ismcat_guide_namespace() {
474 let (pkg, rel) = resolve_namespace("urn:schema:guide:schema:ismcat").unwrap();
475 assert_eq!(pkg, "ISMCAT");
476 assert_eq!(rel, "Schema/ISMCAT/SchemaGuideSchema.xsd");
477 }
478
479 #[test]
480 fn unknown_namespace_returns_none() {
481 assert!(resolve_namespace("urn:not-real:nope").is_none());
482 }
483
484 #[test]
485 fn ism_namespace_lives_in_authcat() {
486 assert_eq!(package_for_namespace("urn:us:gov:ic:ism"), Some("AUTHCAT"));
488 }
489
490 #[test]
491 fn crate_name_kebab_lowercases_correctly() {
492 assert_eq!(crate_name_for("ISMCAT").as_deref(), Some("ism-ismcat"));
493 assert_eq!(
494 crate_name_for("IC-Docbook").as_deref(),
495 Some("ism-ic-docbook")
496 );
497 assert_eq!(crate_name_for("BASE-TDF").as_deref(), Some("ism-base-tdf"));
498 assert_eq!(crate_name_for("not-a-package"), None);
499 }
500
501 #[test]
502 fn published_packages_is_sorted() {
503 for w in PUBLISHED_PACKAGES.windows(2) {
505 assert!(
506 w[0] < w[1],
507 "PUBLISHED_PACKAGES not sorted: {} >= {}",
508 w[0],
509 w[1]
510 );
511 }
512 }
513
514 #[test]
515 fn every_published_package_is_a_known_package() {
516 for &pkg in PUBLISHED_PACKAGES {
518 assert!(
519 PACKAGES.contains(&pkg),
520 "PUBLISHED_PACKAGES references unknown package {pkg}",
521 );
522 }
523 }
524
525 #[test]
526 fn is_published_rejects_unknown_packages() {
527 assert!(!is_published("not-a-package"));
528 assert!(!is_published(""));
529 }
530
531 #[test]
532 fn resolve_namespace_published_returns_none_for_unpublished() {
533 if let Some((uri, pkg, _)) = NAMESPACE_TO_PACKAGE.first() {
537 if !is_published(pkg) {
538 assert!(resolve_namespace_published(uri).is_none());
539 }
540 }
541 assert!(resolve_namespace_published("urn:not-real:nope").is_none());
542 }
543
544 #[test]
545 fn resolve_namespace_published_agrees_with_resolve_when_published() {
546 for &(uri, pkg, rel) in NAMESPACE_TO_PACKAGE {
547 if is_published(pkg) {
548 assert_eq!(resolve_namespace_published(uri), Some((pkg, rel)));
549 }
550 }
551 }
552}