[PATCH 3/5] simplification of profile-based table transforms * this is possible due to oscap xccdf resolve working * now we don't need recursion

Jeffrey Blank blank at eclipse.ncsc.mil
Mon Apr 8 15:31:36 UTC 2013


Signed-off-by: Jeffrey Blank <blank at eclipse.ncsc.mil>
---
 RHEL6/transforms/xccdf2table-profileccirefs.xslt  |  133 ++-------------------
 RHEL6/transforms/xccdf2table-profilenistrefs.xslt |   78 ++-----------
 2 files changed, 19 insertions(+), 192 deletions(-)

diff --git a/RHEL6/transforms/xccdf2table-profileccirefs.xslt b/RHEL6/transforms/xccdf2table-profileccirefs.xslt
index 8ac17fb..a5ad223 100644
--- a/RHEL6/transforms/xccdf2table-profileccirefs.xslt
+++ b/RHEL6/transforms/xccdf2table-profileccirefs.xslt
@@ -7,10 +7,10 @@
 <xsl:variable name="os_srg" select="document('../references/disa-os-srg-v1r1.xml')/cdf:Benchmark" />
 
 <xsl:param name="testinfo" select="''" />
-
 <xsl:param name="format" select="''"/>
 
 <xsl:include href="constants.xslt"/>
+<xsl:include href="table-style.xslt"/>
 
 	<xsl:template match="/">
 		<html>
@@ -31,27 +31,11 @@
 
 
 	<xsl:template match="cdf:Benchmark">
-		<style type="text/css">
-		table
-		{
-			border-collapse:collapse;
-		}
-		table,th, td
-		{
-			border: 1px solid black;
-			vertical-align: top;
-			padding: 3px;
-		}
-		thead
-		{
-			display: table-header-group;
-			font-weight: bold;
-		}
-		</style>
+		<xsl:call-template name="table-style" />
 		<table>
 			<thead>
-				<td>Vuln ID</td>
-				<td>CAT</td>
+				<td>ID</td>
+				<td>Severity</td>
 				<!-- <td>GEN ID</td> -->
 				<td>Title</td>
 				<td>Discussion (Rationale)</td>
@@ -63,67 +47,18 @@
 				<td>800-53 Refs</td>
 			</thead>
 
-		<xsl:call-template name="profileplate">
-			<xsl:with-param name="profileid" select="$profile" />
-		</xsl:call-template>
-		</table>
-	</xsl:template>
-
-	<!-- recursively-called, to handle Profile "extends" behavior -->
-	<xsl:template match="cdf:Profile" name="profileplate">
-		<xsl:param name="profileid" />
-		<xsl:comment> Entered Profile: <xsl:value-of select="$profileid" />	 </xsl:comment>
-
-		<xsl:for-each select="/cdf:Benchmark/cdf:Profile[@id=$profileid]">
-		<xsl:if test="@extends">
-			<xsl:variable name="extendedprofile" select="@extends" />
-			<xsl:call-template name="profileplate">
-				<xsl:with-param name="profileid" select="$extendedprofile" />
-			</xsl:call-template>
-		</xsl:if>
-		</xsl:for-each>
-
-		<xsl:for-each select="/cdf:Benchmark/cdf:Profile[@id=$profileid]/cdf:select">
+		<xsl:for-each select="/cdf:Benchmark/cdf:Profile[@id=$profile]/cdf:select">
 			<xsl:variable name="idrefer" select="@idref" />
 			<xsl:variable name="enabletest" select="@selected" />
-			<xsl:for-each select="/cdf:Benchmark/cdf:Group">
-				<xsl:call-template name="groupplate">
+			<xsl:for-each select="//cdf:Rule">
+				<xsl:call-template name="ruleplate">
 					<xsl:with-param name="idreference" select="$idrefer" />
 					<xsl:with-param name="enabletest" select="$enabletest" />
 				</xsl:call-template>
 			</xsl:for-each>
 		</xsl:for-each>
 
-	</xsl:template>
-
-	<xsl:template match="cdf:Group" name="groupplate">
-		<xsl:param name="idreference" />
-		<xsl:param name="enabletest" />
-		<!-- Group cdf:title -->
-		<xsl:for-each select="cdf:Group">
-			<xsl:call-template name="groupplate">
-				<xsl:with-param name="idreference" select="$idreference" />
-				<xsl:with-param name="enabletest" select="$enabletest" />
-			</xsl:call-template>
-		</xsl:for-each>
-
-		<xsl:for-each select="cdf:Rule">
-			<xsl:choose>
-			<xsl:when test="$format='flat'">
-				<xsl:call-template name="ruleplate-flat">
-					<xsl:with-param name="idreference" select="$idreference" />
-					<xsl:with-param name="enabletest" select="$enabletest" />
-				</xsl:call-template>
-			</xsl:when>
-			<xsl:otherwise>
-				<xsl:call-template name="ruleplate">
-					<xsl:with-param name="idreference" select="$idreference" />
-					<xsl:with-param name="enabletest" select="$enabletest" />
-				</xsl:call-template>
-			</xsl:otherwise>
-
-			</xsl:choose>
-		</xsl:for-each>
+		</table>
 	</xsl:template>
 
 
@@ -139,7 +74,6 @@
 			<td> <xsl:apply-templates select="cdf:rationale"/> </td>
 			<td> <xsl:apply-templates select="cdf:description"/> </td>
 
-
 			<td>
 			<!-- print pretty visual indication of testing data -->
 			<xsl:if test="$testinfo and cdf:reference[@href='test_attestation']">
@@ -201,57 +135,6 @@
 	</xsl:template>
 
 
-	<xsl:template match="cdf:Rule" name="ruleplate-flat">
-		<xsl:param name="idreference" />
-		<xsl:param name="enabletest" />
-		<xsl:if test="@id=$idreference and $enabletest='true'">
-
-		<xsl:variable name="rule" select="."  />
-
-		<xsl:for-each select="cdf:reference[@href=$disa-cciuri]">
-           	<xsl:variable name="cci_formatted" select='format-number(self::node()[text()], "000000")' />
-			<xsl:variable name="cci_expanded" select="concat('CCI-', $cci_formatted)"  />
-
-			<tr>
-			<td>TBD<!-- insert proper Vuln-ID if available --></td>
-			<td> <xsl:value-of select="../@severity" /></td>
-			<td> <xsl:value-of select="../cdf:title" /></td>
-			<!-- call template to grab text and also child nodes (which should all be xhtml)  -->
-			<td> <xsl:apply-templates select="../cdf:rationale"/> </td>
-			<td> <xsl:apply-templates select="../cdf:description"/> </td>
-			<td> <xsl:apply-templates select="../cdf:check" /> </td>
-
-			<td> 
-			<xsl:for-each select="$os_srg/cdf:Group/cdf:Rule" >
-				<xsl:if test="cdf:ident=$cci_expanded">
-					<!-- output the SRG ID -->
-					<xsl:value-of select="cdf:version"/>
-					<br/>
-				</xsl:if>
-			</xsl:for-each>
-			</td> 
-
-			<td> <xsl:value-of select="$cci_expanded"/> </td> 
-
-			<td> 
-				<xsl:for-each select="$cci_list/cci:cci_items/cci:cci_item">
-					<xsl:if test="@id=$cci_expanded">
-						<xsl:for-each select="cci:references/cci:reference">
-							<xsl:if test="@title='NIST SP 800-53'">
-								<xsl:value-of select="@index"/>
-								<br/>
-							</xsl:if>
-						</xsl:for-each>
-					</xsl:if>
-				</xsl:for-each>
-			</td> 
-
-			</tr>
-
-		</xsl:for-each>
-		</xsl:if>
-	</xsl:template>
-
 	<xsl:template match="cdf:check">
 	    <xsl:if test="@system=$ociltransitional">
 			<xsl:apply-templates select="cdf:check-content" />
diff --git a/RHEL6/transforms/xccdf2table-profilenistrefs.xslt b/RHEL6/transforms/xccdf2table-profilenistrefs.xslt
index 3dace53..c26ba84 100644
--- a/RHEL6/transforms/xccdf2table-profilenistrefs.xslt
+++ b/RHEL6/transforms/xccdf2table-profilenistrefs.xslt
@@ -4,6 +4,7 @@
 <!-- this style sheet expects parameter $profile, which is the id of the Profile to be shown -->
 
 <xsl:include href="constants.xslt"/>
+<xsl:include href="table-style.xslt"/>
 
 	<xsl:template match="/">
 		<html>
@@ -23,23 +24,8 @@
 
 
 	<xsl:template match="cdf:Benchmark">
-		<style type="text/css">
-		table
-		{
-			border-collapse:collapse;
-		}
-		table,th, td
-		{
-			border: 1px solid black;
-			vertical-align: top;
-			padding: 3px;
-		}
-		thead
-		{
-			display: table-header-group;
-			font-weight: bold;
-		}
-		</style>
+		<xsl:call-template name="table-style" />
+
 		<table>
 			<thead>
 				<td>CCE ID</td>
@@ -49,57 +35,18 @@
 				<td>Variable Setting</td>
 				<td>NIST 800-53 Mapping</td>
 			</thead>
-
-		<xsl:call-template name="profileplate">
-			<xsl:with-param name="profileid" select="$profile" />
-		</xsl:call-template>
-		</table>
-	</xsl:template>
-
-	<!-- recursively-called, to handle Profile "extends" behavior -->
-	<xsl:template match="cdf:Profile" name="profileplate">
-		<xsl:param name="profileid" />
-		<xsl:comment> Entered Profile: <xsl:value-of select="$profileid" />	 </xsl:comment>
-
-		<xsl:for-each select="/cdf:Benchmark/cdf:Profile[@id=$profileid]">
-		<xsl:if test="@extends">
-			<xsl:variable name="extendedprofile" select="@extends" />
-			<xsl:call-template name="profileplate">
-				<xsl:with-param name="profileid" select="$extendedprofile" />
-			</xsl:call-template>
-		</xsl:if>
-		</xsl:for-each>
-
-		<xsl:for-each select="/cdf:Benchmark/cdf:Profile[@id=$profileid]/cdf:select">
+		<xsl:for-each select="/cdf:Benchmark/cdf:Profile[@id=$profile]/cdf:select">
 			<xsl:variable name="idrefer" select="@idref" />
 			<xsl:variable name="enabletest" select="@selected" />
-			<xsl:for-each select="/cdf:Benchmark/cdf:Group">
-				<xsl:call-template name="groupplate">
+			<xsl:for-each select="//cdf:Rule">
+				<xsl:call-template name="ruleplate">
 					<xsl:with-param name="idreference" select="$idrefer" />
 					<xsl:with-param name="enabletest" select="$enabletest" />
 				</xsl:call-template>
 			</xsl:for-each>
 		</xsl:for-each>
 
-	</xsl:template>
-
-	<xsl:template match="cdf:Group" name="groupplate">
-		<xsl:param name="idreference" />
-		<xsl:param name="enabletest" />
-		<!-- Group cdf:title -->
-		<xsl:for-each select="cdf:Group">
-			<xsl:call-template name="groupplate">
-				<xsl:with-param name="idreference" select="$idreference" />
-				<xsl:with-param name="enabletest" select="$enabletest" />
-			</xsl:call-template>
-		</xsl:for-each>
-
-		<xsl:for-each select="cdf:Rule">
-			<xsl:call-template name="ruleplate">
-				<xsl:with-param name="idreference" select="$idreference" />
-				<xsl:with-param name="enabletest" select="$enabletest" />
-			</xsl:call-template>
-		</xsl:for-each>
+		</table>
 	</xsl:template>
 
 
@@ -116,7 +63,10 @@
 			<!-- need to resolve <sub idref=""> here  -->
 			<td> <!-- TODO: print refine-value from profile associated with rule --> </td>
 			<td> 
-			<xsl:apply-templates select="cdf:reference"/>
+				<xsl:for-each select="cdf:reference[@href=$nist800-53uri]">
+					<xsl:value-of select="text()"/>
+					<br/>
+				</xsl:for-each>
 			</td> 
 		</tr>
 		</xsl:if>
@@ -135,12 +85,6 @@
 		</xsl:for-each>
 	</xsl:template>
 
-	<xsl:template match="cdf:reference">
-		<!-- adjust for the desired reference here -->
-		<xsl:if test="@href=$nist800-53uri">
-			<xsl:value-of select="." />
-		</xsl:if>
-	</xsl:template>
 
     <!-- getting rid of XHTML namespace -->
 	<xsl:template match="xhtml:*">
-- 
1.7.1



More information about the scap-security-guide mailing list