У меня есть два разных типа узлов (модель и цвет) в одном XML-файле, как показано ниже:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="fwHtml.xsl"?>
<vehicle xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<model>
<modelID>508560-003</modelID>
<modelName>Compact</modelName>
<paintID>511258-008</paintID>
</model>
<model>
<modelID>210588-003</modelID>
<modelName>Convertible</modelName>
<paintID>511354-001</paintID>
<paintID>511353-003</paintID>
</model>
<model>
<modelID>210588-004</modelID>
<modelName>SUV</modelName>
<paintID>511354-001</paintID>
<paintID>511353-004</paintID>
</model>
<model>
<modelID>209545-001</modelID>
<modelName>Pickup</modelName>
<paintID>511231-000</paintID>
<paintID>511232-001</paintID>
</model>
<color>
<paintID>511354-001</paintID>
<paintName>White</paintName>
<paintVersion>151.1002</paintVersion>
</color>
<color>
<paintID>511353-003</paintID>
<paintName>Blue</paintName>
<paintVersion>152.1002</paintVersion>
</color>
<color>
<paintID>511353-004</paintID>
<paintName>Brown</paintName>
<paintVersion>152.1002</paintVersion>
</color>
<color>
<paintID>511258-008</paintID>
<paintName>Black</paintName>
<paintVersion>152.1013</paintVersion>
</color>
<color>
<paintID>511231-000</paintID>
<paintName>Gray</paintName>
<paintVersion>200.1003</paintVersion>
</color>
<color>
<paintID>511232-001</paintID>
<paintName>Red</paintName>
<paintVersion>101.1012</paintVersion>
</color>
</vehicle>
Я пытаюсь создать список доступных вариантов цвета для каждой модели с помощью преобразования XML, котороедолжно выглядеть следующим образом:
Я использую следующее для преобразования XML:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Released Paint Versions</h2>
<table border="1">
<tr bgcolor="#56a0d3">
<th>Model ID</th>
<th>Model Description</th>
<th>Paint ID</th>
<th>Paint Description</th>
</tr>
<xsl:for-each select="vehicle/model">
<xsl:for-each select="paintID">
<tr>
<td><xsl:value-of select="../modelID"/></td>
<td><xsl:value-of select="../modelName"/></td>
<td><xsl:value-of select="."/></td>
<xsl:for-each select="/vehicle/color">
<xsl:if test="contains(./paintID,5113)">
<td><xsl:value-of select="./paintName"/></td>
</xsl:if>
</xsl:for-each>
</tr>
</xsl:for-each>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Это меняблизко, но я не могу понять, как создать связь между элементом paintID в узлах модели и элементами paintID в узлах цвета, поэтому я получаю следующее: не совсем то, что мне нужно:
Линия
<xsl:if test="contains(./paintID,5113)">
, очевидно, не верна, но я ближе всего подхожу к тому, чтобы выяснить, как создать модель / paintID <-> Соотношение цвет / краска.