[PATCH 4/5] cleanup and simplication of table transform with references

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


Signed-off-by: Jeffrey Blank <blank at eclipse.ncsc.mil>
---
 RHEL6/transforms/xccdf2table-byref.xslt |  100 +++++++-----------------------
 1 files changed, 24 insertions(+), 76 deletions(-)

diff --git a/RHEL6/transforms/xccdf2table-byref.xslt b/RHEL6/transforms/xccdf2table-byref.xslt
index 0d29dc3..cc180bd 100644
--- a/RHEL6/transforms/xccdf2table-byref.xslt
+++ b/RHEL6/transforms/xccdf2table-byref.xslt
@@ -1,14 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cdf="http://checklists.nist.gov/xccdf/1.1" xmlns:xhtml="http://www.w3.org/1999/xhtml">
 
-<!-- this style sheet expects parameter $ref, which is the abbreviation of the ref to be shown -->
-
-<!-- optionally, the style sheet can receive parameter $delim, will result in splitting of references onto 
-     separate rows of output -->
-
-<xsl:param name="delim"/>
+<!-- this style sheet expects parameter $ref, the abbreviation of the reference type to be shown -->
 
 <xsl:include href="constants.xslt"/>
+<xsl:include href="table-style.xslt"/>
 
 	<xsl:template match="/">
 		<html>
@@ -30,23 +26,7 @@
 
 
 	<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>Reference (<xsl:value-of select="$ref"/>)</td>
@@ -56,73 +36,41 @@
 				<td>Variable Setting</td>
 			</thead>
 
-                <xsl:apply-templates select=".//cdf:Rule" />
+			<xsl:if test="$ref='nist'">
+				<xsl:for-each select="//cdf:reference[@href=$nist800-53uri]" >
+					<xsl:call-template name="rule-output">
+						<xsl:with-param name="refinfo" select="." />
+					</xsl:call-template>
+				</xsl:for-each>
+			</xsl:if>
+
+			<xsl:if test="$ref='cnss'">
+				<xsl:for-each select="//cdf:reference[@href=$cnss1253uri]" >
+					<xsl:call-template name="rule-output">
+						<xsl:with-param name="refinfo" select="." />
+					</xsl:call-template>
+				</xsl:for-each>
+			</xsl:if>
+
 		</table>
 	</xsl:template>
 
 
 	<xsl:template name="rule-output">
-          <xsl:param name="refstring"/>
+          <xsl:param name="refinfo"/>
 		<tr>
 			<td> 
-			<xsl:value-of select="$refstring"/>
+			<xsl:value-of select="$refinfo"/>
 			</td> 
 			<!--<td> <xsl:value-of select="cdf:ident" /></td>-->
-			<td> <xsl:value-of select="cdf:title" /></td>
-			<td> <xsl:apply-templates select="cdf:description"/> </td>
-			<!-- call template to grab text and also child nodes (which should all be xhtml)  -->
-			<!-- need to resolve <sub idref=""> here  -->
-			<td> <xsl:apply-templates select="cdf:rationale"/> </td>
+			<td> <xsl:value-of select="../cdf:title" /></td>
+			<td> <xsl:apply-templates select="../cdf:description"/> </td>
+			<td> <xsl:apply-templates select="../cdf:rationale"/> </td>
 			<td> <!-- TODO: print refine-value from profile associated with rule --> </td>
 		</tr>
-        </xsl:template>
-
-
-	<xsl:template name="rule-info">
-		<xsl:param name="refinfo"/>
-		<!-- <xsl:variable name="$delim" select="','" /> -->
-
-		<xsl:choose>
-			<xsl:when test="$delim and contains($refinfo, $delim)">
-				<!-- output the rule -->
-				<xsl:call-template name="rule-output" >
-					<xsl:with-param name="refstring" select="substring-before($refinfo, $delim)" />
-				</xsl:call-template>
-
-				<!-- recurse for additional refs -->
-				<xsl:call-template name="rule-info">
-					<xsl:with-param name="refinfo" select="substring-after($refinfo, $delim)" />
-				</xsl:call-template>
-			</xsl:when>
-
-		 	<xsl:otherwise>
-				<xsl:call-template name="rule-output" >
-					<xsl:with-param name="refstring" select="$refinfo" />
-				</xsl:call-template>
-			</xsl:otherwise>
-		</xsl:choose>
-	 
 	</xsl:template>
 
 
-	<xsl:template match="cdf:Rule">
-		  <xsl:if test="cdf:reference[@href=$nist800-53uri] and $ref='nist'">
-                    <xsl:call-template name="rule-info">
-		      <xsl:with-param name="refinfo" select="cdf:reference[@href=$nist800-53uri]" />
-                    </xsl:call-template>
-		  </xsl:if>
-		  <xsl:if test="cdf:reference[@href=$dcid63uri] and $ref='dcid'">
-                    <xsl:call-template name="rule-info">
-		      <xsl:with-param name="refinfo" select="cdf:reference[@href=$dcid63uri]" />
-                    </xsl:call-template>
-		  </xsl:if>
-		  <xsl:if test="cdf:reference[@href=$cnss1253uri] and $ref='cnss'">
-                    <xsl:call-template name="rule-info">
-		      <xsl:with-param name="refinfo" select="cdf:reference[@href=$cnss1253uri]" />
-                    </xsl:call-template>
-		  </xsl:if>
-	</xsl:template>
-
 	<!-- getting rid of XHTML namespace -->
 	<xsl:template match="xhtml:*">
 		<xsl:element name="{local-name()}">
-- 
1.7.1



More information about the scap-security-guide mailing list