..
/
download
<?xml version="1.0" encoding="UTF-8"?>
<!--*********************************************************************************************************
** S1000D Issue 4.0 BREX Stylesheet
**
** Displays DMC, DM Title, path, use, and values (if any) in an easy-to-read format.
** Enable display of embedded comments after the "Results" table by following instructions
** on Line 282 below.
**
** NOTE: Entries prefixed with "No validation possible" were determined by an XSL script
** used for testing this BREX. Other tools may be able to validate such rules.
**
** Use: <?xml-stylesheet type="text/xsl" href="brex4-0.xsl"?>
**
** BTAS, FEB-SEP 2009
*************************************************************************************************************-->
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title><xsl:value-of select="//dmAddressItems/dmTitle/techName"/></title>
</head>
<body style="font-family:arial;font-size:x-small">
<h5 style="text-align:center">DMC-<xsl:for-each select="//dmIdent/dmCode">
<xsl:value-of select="concat(@modelIdentCode, '-', @systemDiffCode, '-', @systemCode, '-', @subSystemCode, @subSubSystemCode, '-', @assyCode, '-', @disassyCode, @disassyCodeVariant, '-', @infoCode, @infoCodeVariant, '-', @itemLocationCode)"/>
</xsl:for-each>
</h5>
<h6 style="text-align:center">Issue 4.0 BREX</h6>
<h6 style="text-align:center">
<xsl:value-of select="//dmAddressItems/dmTitle/techName"/> - <xsl:value-of select="//dmAddressItems/dmTitle/infoName"/>
</h6>
<hr size="2"/>
<table border="0" frame="void" style="width:100%;font-size:smaller;vertical-align:top;text-wrap:unrestricted;word-wrap:break-word;border:gray;">
<tbody>
<tr>
<td style="color:blue;font-weight:bold;border-top:dashed thin gray;border-left:dashed thin gray;">Total rules</td>
<td style="color:blue;font-weight:bold;text-align:right;border-top:dashed thin gray;border-right:dashed thin gray;"><xsl:value-of select="count(//structureObjectRule[not(@changeType='delete')])"/></td>
<td> </td>
<td style="color:black;border-left:dashed thin gray;border-top:dashed thin gray;">Issue # / In-Work #:</td>
<td style="color:blue;border-right:dashed thin gray;border-top:dashed thin gray;"><xsl:value-of select="//dmIdent/issueInfo/@issueNumber"/> / <xsl:value-of select="//dmIdent/issueInfo/@inWork"/></td>
<td> </td>
<td style="color:black;width:20%;vertical-align:top;border-top:dashed thin gray;border-left:dashed thin gray;" rowspan="2">Responsible Partner Company (Enterprise Code):</td>
<td style="color:blue;width:15%;vertical-align:top;border-top:dashed thin gray;border-right:dashed thin gray;" rowspan="2"><xsl:value-of select="//dmStatus/responsiblePartnerCompany/enterpriseName"/> (<xsl:value-of select="//dmStatus/responsiblePartnerCompany/@enterpriseCode"/>)</td>
</tr>
<tr>
<td style="color:gray;border-left:dashed thin gray;"> Total @allowedValueFlag</td>
<td style="color:blue;text-align:right;border-right:dashed thin gray;"><xsl:value-of select="count(//@allowedObjectFlag[not(ancestor::structureObjectRule[attribute::changeType='delete'])])"/></td>
<td> </td>
<td style="color:black;border-left:dashed thin gray;">Language / Country:</td>
<td style="color:blue;border-right:dashed thin gray;"><xsl:value-of select="//dmIdent/language/@languageIsoCode"/> / <xsl:value-of select="//dmIdent/language/@countryIsoCode"/></td>
<td> </td>
</tr>
<tr>
<td style="color:gray;border-left:dashed thin gray;"> Total rules w/minimum of 1 value</td>
<td style="color:blue;text-align:right;border-bottom:solid thin black;border-right:dashed thin gray;"><xsl:value-of select="count(//structureObjectRule/objectValue[1][not(ancestor::structureObjectRule[attribute::changeType='delete'])])"/></td>
<td> </td>
<td style="color:black;border-left:dashed thin gray;">Issue Date <span style="font-size:smaller;color:gray;">(YYYY-MM-DD)</span><span style="color:black;">:</span></td>
<td style="color:blue;border-right:dashed thin gray;"><xsl:value-of select="//dmAddressItems/issueDate/@year"/>-<xsl:value-of select="//dmAddressItems/issueDate/@month"/>-<xsl:value-of select="//dmAddressItems/issueDate/@day"/></td>
<td> </td>
<td style="color:black;vertical-align:top;border-left:dashed thin gray;border-bottom:dashed thin gray;" rowspan="2">Originator (Enterprise Code):</td>
<td style="color:blue;vertical-align:top;border-right:dashed thin gray;border-bottom:dashed thin gray;" rowspan="2"><xsl:value-of select="//dmStatus/originator/enterpriseName"/> (<xsl:value-of select="//dmStatus/originator/@enterpriseCode"/>)</td>
</tr>
<tr>
<td style="color:green;font-weight:bold;border-left:dashed thin gray;border-bottom:dashed thin gray;">Possible validations</td>
<td style="color:green;font-weight:bold;text-align:right;border-right:dashed thin gray;border-bottom:dashed thin gray;"><xsl:value-of select="count(//@allowedObjectFlag[not(ancestor::structureObjectRule[attribute::changeType='delete'])])+count(//structureObjectRule/objectValue[1][not(ancestor::structureObjectRule[attribute::changeType='delete'])])"/></td>
<td> </td>
<td style="color:black;border-left:dashed thin gray;border-bottom:dashed thin gray;">Issue Type: <span style="color:blue;"><xsl:value-of select="//dmStatus/@issueType"/><xsl:if test="not(//dmStatus/@issueType)">N/A</xsl:if></span></td>
<td style="color:black;border-right:dashed thin gray;border-bottom:dashed thin gray;">Security:
<xsl:choose>
<xsl:when test="//dmStatus/security/@securityClassification = 01"><span style="color:blue;">Unclassified</span></xsl:when>
<xsl:when test="//dmStatus/security/@securityClassification = 03"><span style="color:blue;">Confidential</span></xsl:when>
<xsl:when test="//dmStatus/security/@securityClassification = 04"><span style="color:blue;">Secret</span></xsl:when>
<xsl:when test="//dmStatus/security/@securityClassification = 05"><span style="color:blue;">Top Secret</span></xsl:when>
<xsl:otherwise><span style="color:red;">Prohibited Use!</span></xsl:otherwise>
</xsl:choose>
</td>
<td> </td>
</tr>
</tbody>
</table>
<br/>
<table border="0" frame="void" style="font-size:smaller;vertical-align:top;text-wrap:unrestricted;word-wrap:break-word;border:gray;">
<tbody>
<tr>
<td style="padding: 10px;color:black;font-weight:bold;border-top:dashed thin gray;border-left:dashed thin gray;text-align:right;border-bottom:dashed thin gray;">BREX DM Reference:</td>
<td style="padding: 10px;color:blue;vertical-align:top;border-top:dashed thin gray;text-align:center;border-bottom:dashed thin gray;">DMC-<xsl:for-each select="//brexDmRef/dmRef/dmRefIdent/dmCode">
<xsl:value-of select="concat(@modelIdentCode, '-', @systemDiffCode, '-', @systemCode, '-', @subSystemCode, @subSubSystemCode, '-', @assyCode, '-', @disassyCode, @disassyCodeVariant, '-', @infoCode, @infoCodeVariant, '-', @itemLocationCode)"/></xsl:for-each></td>
<td style="padding: 10px;color:gray;vertical-align:top;border-top:dashed thin gray;border-right:dashed thin gray;border-bottom:dashed thin gray;"><xsl:if test="not(//brexDmRef/dmRef/dmRefAddressItems/dmTitle)">(No title)</xsl:if>
<xsl:if test="//brexDmRef/dmRef/dmRefAddressItems/dmTitle">(<xsl:value-of select="//brexDmRef/dmRef/dmRefAddressItems/dmTitle/techName"/><xsl:if test="//brexDmRef/dmRef/dmRefAddressItems/dmTitle/infoName"> - <xsl:value-of select="//brexDmRef/dmRef/dmRefAddressItems/dmTitle/infoName"/></xsl:if>)</xsl:if></td>
</tr>
</tbody>
</table>
<xsl:if test="//content/refs">
<table border="0" frame="void" style="font-size:smaller;vertical-align:top;text-wrap:unrestricted;word-wrap:break-word;border:gray;">
<tbody>
<tr>
<td style="color:black;text-align:right;text-decoration:underline;">Additional References</td>
<td style="color:black;vertical-align:top;"></td>
<td style="color:black;vertical-align:top;"></td>
</tr>
<xsl:if test="//content/refs/dmRef">
<tr>
<td style="color:gray;"></td>
<td style="color:black;vertical-align:top;text-align:right;">Data Module References -</td>
<td style="color:black;vertical-align:top;"><xsl:for-each select="//content/refs/dmRef/dmRefIdent/dmCode">
<xsl:number value="position()" format="1"/>. <span style="color:blue;">DMC-<xsl:value-of select="concat(@modelIdentCode, '-', @systemDiffCode, '-', @systemCode, '-', @subSystemCode, @subSubSystemCode, '-', @assyCode, '-', @disassyCode, @disassyCodeVariant, '-', @infoCode, @infoCodeVariant, '-', @itemLocationCode)"/></span><br/>
</xsl:for-each></td>
</tr>
</xsl:if>
<xsl:if test="//content/refs/pmRef">
<tr>
<td style="color:gray;"></td>
<td style="color:black;vertical-align:top;">Publication Module References -</td>
<td style="color:black;vertical-align:top;"><xsl:for-each select="//content/refs/pmRef/pmRefIdent/pmCode">
<xsl:number value="position()" format="1"/>. <span style="color:blue;">PMC-<xsl:value-of select="concat(@modelIdentCode, '-', @pmIssuer, '-', @pmNumber, '-', @pmVolume)"/></span><br/>
</xsl:for-each></td>
</tr>
</xsl:if>
<xsl:if test="//content/refs/externalPubRef">
<tr>
<td style="color:gray;font-weight:bold;"></td>
<td style="color:black;text-align:right;vertical-align: top;">External References -</td>
<td style="color:black;"><xsl:for-each select="//content/refs/externalPubRef/externalPubRefIdent/externalPubCode">
<xsl:number value="position()" format="1"/>. <span style="color:blue;"><xsl:value-of select="@pubCodingScheme"/> <xsl:value-of select="."/></span><xsl:if test="not(//content/refs/externalPubRef/externalPubRefIdent/externalPubTitle)"> (No title)</xsl:if>
<xsl:if test="//content/refs/externalPubRef/externalPubRefIdent/externalPubTitle"> (<xsl:value-of select="//content/refs/externalPubRef/externalPubRefIdent/externalPubTitle"/>)</xsl:if><br/>
</xsl:for-each></td>
</tr>
</xsl:if>
</tbody>
</table>
</xsl:if>
<hr size="2"/>
<br/>
<table border="1" frame="box" style="font-size:smaller;vertical-align:top;text-wrap:unrestricted;word-wrap:break-word;overflow: scroll;table-layout:fixed;width:100%">
<thead>
<tr style="color:black;font-size:bigger;background-color:lime">
<th colspan="4">Structure Object Rules</th>
</tr>
<tr style="background-color:silver">
<th style="width:5%;">#</th>
<th style="width:35%;">Path</th>
<th style="width:35%;">Use</th>
<th style="width:25%;">Value</th>
</tr>
</thead>
<tbody>
<xsl:for-each select="//structureObjectRuleGroup/structureObjectRule">
<xsl:choose>
<xsl:when test="@changeType='delete'">
<tr>
<td style="padding-left: 5px;background-color:silver;"><xsl:number value="position()" format="1"/>.</td>
<td style="background-color:silver;color:gray;font-weight:bold;font-size:smaller;text-align:center;letter-spacing:1px;" colspan="3">[DELETED]</td>
</tr>
</xsl:when>
<xsl:otherwise>
<tr style="vertical-align:top">
<td style="padding-left: 5px;"><xsl:number value="position()" format="1"/>.
<xsl:choose>
<xsl:when test="@changeType='modify'">
<span style="background-color:lime;font-weight:bold;font-size:smaller;letter-spacing:1px;">[CHANGED]</span>
</xsl:when>
<xsl:when test="@changeType='add'">
<span style="background-color:aqua;font-weight:bold;font-size:smaller;letter-spacing:1px;">[NEW]</span>
</xsl:when>
</xsl:choose>
</td>
<td>
<xsl:if test="./objectPath/@allowedObjectFlag=1">
<span style="color:blue;font-weight:bold">Required use of:</span>
<br/>
</xsl:if>
<xsl:if test="./objectPath/@allowedObjectFlag=0">
<span style="color:red;font-weight:bold">Prohibited use of:</span>
<br/>
</xsl:if>
<xsl:if test="not(./objectPath/@allowedObjectFlag) and not(./objectValue)">
<span style="color:teal;font-weight:bold">No validation possible:</span>
<br/>
</xsl:if>
<xsl:if test="./objectValue">
<span style="color:purple;font-weight:bold">Values are restricted:</span>
<br/>
</xsl:if>
<xsl:value-of select="./objectPath"/>
</td>
<td>
<xsl:value-of select="objectUse"/>
</td>
<td>
<xsl:apply-templates select="objectValue"/>
</td>
</tr>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</tbody>
</table><p/>
<hr size="2"/>
<!-- ***************************************************************************************************************
**
** Display SNS
** Added: 04/10/09
**
*******************************************************************************************************************-->
<xsl:if test="//snsRules">
<p/>
<table width="100%" border="1" frame="box" style="font-size:smaller;vertical-align:top;">
<thead>
<tr style="color:black;font-size:bigger;background-color:lime">
<th colspan="4">SNS Rules</th>
</tr>
<tr style="background-color:silver">
<th width="5%">#</th>
<th width="10%">Code</th>
<th width="15%">Description</th>
<th width="70%">Title</th>
</tr>
</thead>
<tbody>
<xsl:for-each select="//snsDescr">
<xsl:for-each select="//snsSystem">
<tr style="vertical-align:top">
<td style="padding-left: 5px;">
<xsl:number value="position()" format="1"/>.</td>
<td style="padding-left: 5px;">
<xsl:value-of select="snsCode"/>
<xsl:for-each select="./snsSubSystem">
<br/><xsl:text> </xsl:text><xsl:value-of select="snsCode"/>
<xsl:for-each select="./snsSubSubSystem">
<br/><xsl:text> </xsl:text><xsl:value-of select="snsCode"/>
<xsl:for-each select="./snsAssy">
<br/><xsl:text> </xsl:text><xsl:value-of select="snsCode"/>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</td>
<td style="padding-left: 5px;">
<span style="color:gray">System</span>
<xsl:for-each select="./snsSubSystem">
<br/><span style="color:gray"> SubSystem</span>
<xsl:for-each select="./snsSubSubSystem">
<br/><span style="color:gray"> SubSubSystem</span>
<xsl:for-each select="./snsAssy">
<br/><span style="color:gray"> Assembly</span>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</td>
<td style="padding-left: 5px;">
<xsl:value-of select="snsTitle"/>
<xsl:for-each select="./snsSubSystem">
<br/><xsl:text> </xsl:text><xsl:value-of select="snsTitle"/>
<xsl:for-each select="./snsSubSubSystem">
<br/><xsl:text> </xsl:text><xsl:value-of select="snsTitle"/>
<xsl:for-each select="./snsAssy">
<br/><xsl:text> </xsl:text><xsl:value-of select="snsTitle"/>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</td>
</tr>
</xsl:for-each>
</xsl:for-each>
</tbody>
</table><p/>
<hr size="2"/>
</xsl:if>
<!-- ***************************************************************************************************************
**
** Display Notations
** Added: 04/10/09
**
*******************************************************************************************************************-->
<xsl:if test="//notationRuleList">
<p/>
<table width="100%" border="1" frame="box" style="font-size:smaller;vertical-align:top;">
<thead>
<tr style="color:black;font-size:bigger;background-color:lime">
<th colspan="3">Notation Rules</th>
</tr>
<tr style="background-color:silver">
<th width="5%">#</th>
<th width="15%">Notation Name</th>
<th width="80%">Object Use</th>
</tr>
</thead>
<tbody>
<xsl:for-each select="//notationRule">
<tr style="vertical-align:top">
<td style="padding-left: 5px;">
<xsl:number value="position()" format="1"/>.</td>
<td style="padding-left: 5px;">
<xsl:value-of select="notationName"/>
</td>
<td style="padding-left: 5px;">
<xsl:value-of select="objectUse"/>
</td>
</tr>
</xsl:for-each>
</tbody>
</table><p/>
<hr size="2"/>
</xsl:if>
<!--*******************************************************************************************************************
**
** If comments need to be displayed, uncomment the line <xsl:apply-templates/> below.
**
***********************************************************************************************************************
<xsl:apply-templates/>-->
</body>
</html>
</xsl:template>
<xsl:template match="objectValue">
<xsl:if test="//objectValue">
<xsl:for-each select=".">
<xsl:if test="./@valueForm">
<xsl:choose>
<xsl:when test="@valueForm='range'">
<span style="font-weight:bold;color:green">Range: </span>
</xsl:when>
<xsl:when test="@valueForm='single'">
<span style="font-weight:bold;color:blue">Single Value: </span>
</xsl:when>
<xsl:when test="@valueForm='pattern'">
<span style="font-weight:bold;color:purple">Pattern: </span>
</xsl:when>
</xsl:choose>
</xsl:if>
<xsl:if test="./@valueAllowed">
<xsl:value-of select="./@valueAllowed"/>
</xsl:if>
<xsl:if test=". != ''">
<xsl:text>, </xsl:text>
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
<br/>
</xsl:if>
</xsl:template>
<xsl:template match="comment()">
<p style="color:gray;font-weight:bold;font-style:italic;font-size:bigger"><xsl:value-of select="."/></p>
</xsl:template>
</xsl:stylesheet>
gopher://khzae.net/0/s1000d/links/projects/3031/brex4-0.xsl