paulb@30 | 1 | <?xml version="1.0" encoding="utf-8"?> |
paulb@30 | 2 | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
paulb@30 | 3 | version="1.0"> |
paulb@30 | 4 | |
paulb@30 | 5 | <xsl:param name="database"/> |
paulb@30 | 6 | |
paulb@30 | 7 | <xsl:template match="configuration"> |
paulb@30 | 8 | <xsl:copy> |
paulb@30 | 9 | <xsl:apply-templates select="@*"/> |
paulb@158 | 10 | <!-- Find out some additional information. --> |
paulb@158 | 11 | <xsl:variable name="cpu-socket" select="$database/database/base-system/base-system-enum[@value = current()/details/base-system/@value]/@cpu-socket"/> |
paulb@158 | 12 | <xsl:variable name="interface" select="$database/database/base-system/base-system-enum[@value = current()/details/base-system/@value]/@interface"/> |
paulb@30 | 13 | <!-- Complete all multiple choice fields. --> |
paulb@30 | 14 | <details> |
paulb@158 | 15 | <base-system> |
paulb@158 | 16 | <xsl:variable name="value" select="details/base-system/@value"/> |
paulb@158 | 17 | <xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute> |
paulb@158 | 18 | <xsl:for-each select="$database/database/base-system/base-system-enum"> |
paulb@158 | 19 | <xsl:copy> |
paulb@158 | 20 | <xsl:apply-templates select="@*"/> |
paulb@158 | 21 | <xsl:if test="@value = $value"> |
paulb@158 | 22 | <xsl:attribute name="value-is-set">true</xsl:attribute> |
paulb@158 | 23 | </xsl:if> |
paulb@158 | 24 | </xsl:copy> |
paulb@158 | 25 | </xsl:for-each> |
paulb@158 | 26 | </base-system> |
paulb@158 | 27 | <cpu> |
paulb@158 | 28 | <xsl:variable name="value" select="details/cpu/@value"/> |
paulb@158 | 29 | <xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute> |
paulb@158 | 30 | <xsl:for-each select="$database/database/cpu/cpu-enum[@cpu-socket = $cpu-socket or not(@cpu-socket)]"> |
paulb@158 | 31 | <xsl:copy> |
paulb@158 | 32 | <xsl:apply-templates select="@*"/> |
paulb@158 | 33 | <xsl:if test="@value = $value"> |
paulb@158 | 34 | <xsl:attribute name="value-is-set">true</xsl:attribute> |
paulb@158 | 35 | </xsl:if> |
paulb@158 | 36 | </xsl:copy> |
paulb@158 | 37 | </xsl:for-each> |
paulb@158 | 38 | </cpu> |
paulb@30 | 39 | </details> |
paulb@30 | 40 | <memory> |
paulb@30 | 41 | <xsl:for-each select="memory/memory-unit"> |
paulb@158 | 42 | <xsl:copy> |
paulb@158 | 43 | <xsl:variable name="value" select="@value"/> |
paulb@158 | 44 | <xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute> |
paulb@158 | 45 | <xsl:for-each select="$database/database/memory-unit/memory-unit-enum"> |
paulb@158 | 46 | <xsl:copy> |
paulb@158 | 47 | <xsl:apply-templates select="@*"/> |
paulb@158 | 48 | <xsl:if test="@value = $value"> |
paulb@158 | 49 | <xsl:attribute name="value-is-set">true</xsl:attribute> |
paulb@158 | 50 | </xsl:if> |
paulb@158 | 51 | </xsl:copy> |
paulb@158 | 52 | </xsl:for-each> |
paulb@158 | 53 | </xsl:copy> |
paulb@30 | 54 | </xsl:for-each> |
paulb@30 | 55 | </memory> |
paulb@30 | 56 | <hard-disks> |
paulb@30 | 57 | <xsl:for-each select="hard-disks/hard-disk"> |
paulb@158 | 58 | <xsl:copy> |
paulb@158 | 59 | <xsl:variable name="value" select="@value"/> |
paulb@158 | 60 | <xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute> |
paulb@158 | 61 | <xsl:for-each select="$database/database/hard-disk/hard-disk-enum[@interface = $interface or not(@interface)]"> |
paulb@158 | 62 | <xsl:copy> |
paulb@158 | 63 | <xsl:apply-templates select="@*"/> |
paulb@158 | 64 | <xsl:if test="@value = $value"> |
paulb@158 | 65 | <xsl:attribute name="value-is-set">true</xsl:attribute> |
paulb@158 | 66 | </xsl:if> |
paulb@158 | 67 | </xsl:copy> |
paulb@158 | 68 | </xsl:for-each> |
paulb@158 | 69 | </xsl:copy> |
paulb@30 | 70 | </xsl:for-each> |
paulb@30 | 71 | </hard-disks> |
paulb@30 | 72 | <storage> |
paulb@30 | 73 | <xsl:for-each select="storage/storage-unit"> |
paulb@158 | 74 | <xsl:copy> |
paulb@158 | 75 | <xsl:variable name="value" select="@value"/> |
paulb@158 | 76 | <xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute> |
paulb@158 | 77 | <xsl:for-each select="$database/database/storage-unit/storage-unit-enum"> |
paulb@158 | 78 | <xsl:copy> |
paulb@158 | 79 | <xsl:apply-templates select="@*"/> |
paulb@158 | 80 | <xsl:if test="@value = $value"> |
paulb@158 | 81 | <xsl:attribute name="value-is-set">true</xsl:attribute> |
paulb@158 | 82 | </xsl:if> |
paulb@158 | 83 | </xsl:copy> |
paulb@158 | 84 | </xsl:for-each> |
paulb@158 | 85 | </xsl:copy> |
paulb@30 | 86 | </xsl:for-each> |
paulb@30 | 87 | </storage> |
paulb@30 | 88 | <peripherals> |
paulb@158 | 89 | <keyboard> |
paulb@158 | 90 | <xsl:variable name="value" select="peripherals/keyboard/@value"/> |
paulb@158 | 91 | <xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute> |
paulb@158 | 92 | <xsl:for-each select="$database/database/keyboard/keyboard-enum"> |
paulb@158 | 93 | <xsl:copy> |
paulb@158 | 94 | <xsl:apply-templates select="@*"/> |
paulb@158 | 95 | <xsl:if test="@value = $value"> |
paulb@158 | 96 | <xsl:attribute name="value-is-set">true</xsl:attribute> |
paulb@158 | 97 | </xsl:if> |
paulb@158 | 98 | </xsl:copy> |
paulb@158 | 99 | </xsl:for-each> |
paulb@158 | 100 | </keyboard> |
paulb@158 | 101 | <mouse> |
paulb@158 | 102 | <xsl:variable name="value" select="peripherals/mouse/@value"/> |
paulb@158 | 103 | <xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute> |
paulb@158 | 104 | <xsl:for-each select="$database/database/mouse/mouse-enum"> |
paulb@158 | 105 | <xsl:copy> |
paulb@158 | 106 | <xsl:apply-templates select="@*"/> |
paulb@158 | 107 | <xsl:if test="@value = $value"> |
paulb@158 | 108 | <xsl:attribute name="value-is-set">true</xsl:attribute> |
paulb@158 | 109 | </xsl:if> |
paulb@158 | 110 | </xsl:copy> |
paulb@158 | 111 | </xsl:for-each> |
paulb@158 | 112 | </mouse> |
paulb@158 | 113 | <screen> |
paulb@158 | 114 | <xsl:variable name="value" select="peripherals/screen/@value"/> |
paulb@158 | 115 | <xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute> |
paulb@158 | 116 | <xsl:for-each select="$database/database/screen/screen-enum"> |
paulb@158 | 117 | <xsl:copy> |
paulb@158 | 118 | <xsl:apply-templates select="@*"/> |
paulb@158 | 119 | <xsl:if test="@value = $value"> |
paulb@158 | 120 | <xsl:attribute name="value-is-set">true</xsl:attribute> |
paulb@158 | 121 | </xsl:if> |
paulb@158 | 122 | </xsl:copy> |
paulb@158 | 123 | </xsl:for-each> |
paulb@158 | 124 | </screen> |
paulb@30 | 125 | </peripherals> |
paulb@30 | 126 | </xsl:copy> |
paulb@30 | 127 | </xsl:template> |
paulb@30 | 128 | |
paulb@30 | 129 | <!-- Replicate unknown elements. --> |
paulb@30 | 130 | |
paulb@30 | 131 | <xsl:template match="@*|node()"> |
paulb@30 | 132 | <xsl:copy> |
paulb@30 | 133 | <xsl:apply-templates select="@*|node()"/> |
paulb@30 | 134 | </xsl:copy> |
paulb@30 | 135 | </xsl:template> |
paulb@30 | 136 | |
paulb@30 | 137 | </xsl:stylesheet> |