1
2
3
4
5
6 package gov.nist.secauto.oscal.tools.cli.core.operations;
7
8 import gov.nist.secauto.metaschema.core.model.util.XmlUtil;
9 import gov.nist.secauto.metaschema.core.util.ObjectUtils;
10
11 import net.sf.saxon.jaxp.SaxonTransformerFactory;
12
13 import org.apache.logging.log4j.LogManager;
14 import org.apache.logging.log4j.Logger;
15
16 import java.io.File;
17 import java.io.IOException;
18
19 import javax.xml.transform.Source;
20 import javax.xml.transform.Transformer;
21 import javax.xml.transform.TransformerException;
22 import javax.xml.transform.TransformerFactory;
23 import javax.xml.transform.stream.StreamResult;
24 import javax.xml.transform.stream.StreamSource;
25
26 public final class XMLOperations {
27 private static final Logger LOGGER = LogManager.getLogger(XMLOperations.class);
28
29 private XMLOperations() {
30
31 }
32
33 public static void renderCatalogHTML(File input, File result) throws IOException, TransformerException {
34 render(input, result,
35 XmlUtil.getStreamSource(ObjectUtils.requireNonNull(
36 XMLOperations.class.getResource("/xsl/oscal-for-bootstrap-html.xsl"))));
37 }
38
39 public static void renderProfileHTML(File input, File result) throws IOException, TransformerException {
40 SaxonTransformerFactory transfomerFactory = (SaxonTransformerFactory) TransformerFactory.newInstance();
41
42
43
44 File temp = File.createTempFile("resolved-profile", ".xml");
45
46 try {
47 Transformer transformer = transfomerFactory.newTransformer(
48 XmlUtil.getStreamSource(ObjectUtils.requireNonNull(
49 XMLOperations.class.getResource("/xsl/profile-resolver.xsl"))));
50 transformer.transform(new StreamSource(input), new StreamResult(temp));
51
52 transformer = transfomerFactory.newTransformer(
53 XmlUtil.getStreamSource(ObjectUtils.requireNonNull(
54 XMLOperations.class.getResource("/xsl/oscal-for-bootstrap-html.xsl"))));
55 transformer.transform(new StreamSource(temp), new StreamResult(result));
56 } finally {
57 if (!temp.delete()) {
58 LOGGER.atError().log("failed to delete file: {}", temp);
59 }
60 }
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 }
80
81 public static void render(File input, File result, Source transform) throws TransformerException {
82 TransformerFactory transfomerFactory = TransformerFactory.newInstance();
83 assert transfomerFactory instanceof SaxonTransformerFactory;
84 Transformer transformer = transfomerFactory.newTransformer(transform);
85 transformer.transform(new StreamSource(input), new StreamResult(result));
86 }
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105 }