1 <?xml version="1.0" encoding="utf-8"?> 2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 3 version="1.0"> 4 5 <!-- Find out some additional information. --> 6 7 <xsl:variable name="cpu-socket" select="configuration/details/base-system/base-system-enum[@value = ../@value]/@cpu-socket"/> 8 <xsl:variable name="interface" select="configuration/details/base-system/base-system-enum[@value = ../@value]/@interface"/> 9 <xsl:variable name="storage" select="configuration/storage/storage-unit/@value"/> 10 11 12 13 <!-- Descend into the document, including only relevant elements. --> 14 15 <xsl:template match="cpu-enum"> 16 <xsl:if test="@cpu-socket = $cpu-socket or not(@cpu-socket)"> 17 <cpu-enum> 18 <xsl:apply-templates select="@*"/> 19 <xsl:apply-templates select="*"/> 20 </cpu-enum> 21 </xsl:if> 22 </xsl:template> 23 24 <xsl:template match="hard-disk-enum"> 25 <xsl:if test="@interface = $interface or not(@interface)"> 26 <hard-disk-enum> 27 <xsl:apply-templates select="@*"/> 28 <xsl:apply-templates select="*"/> 29 </hard-disk-enum> 30 </xsl:if> 31 </xsl:template> 32 33 <xsl:template match="accessory-enum"> 34 <xsl:if test="$storage[string() = current()/@storage] or not(@storage)"> 35 <accessory-enum> 36 <xsl:apply-templates select="@*"/> 37 <xsl:apply-templates select="*"/> 38 </accessory-enum> 39 </xsl:if> 40 </xsl:template> 41 42 43 44 <!-- Replicate unknown elements. --> 45 46 <xsl:template match="@*|node()"> 47 <xsl:copy> 48 <xsl:apply-templates select="@*|node()"/> 49 </xsl:copy> 50 </xsl:template> 51 52 </xsl:stylesheet>