Как создать XSL для таблицы со сложным элементом - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть xml для сложного автомобильного элемента, и я не могу создать его XSL. Это дает мне несоответствующий результат, потому что у него сложный элемент двигателя, а у «двигателя» сложный элемент «топлива». Вот мой xml:

<?xml version="1.0" encoding="utf-8"?>
<Cars>
  <Car Color="Silver">
    <Brand>Ford</Brand>
    <Model>Fusion</Model>
    <Year>2018</Year>
    <VIN>12345678</VIN>
    <Engine Valves="16">
      <Fuel>
        <Type>Gas</Type>
        <MPG>26</MPG>
      </Fuel>
      <Size>1.8</Size>
      <Cylinders>4</Cylinders>
    </Engine>
    <Owners>
      <Owner>
        <First>Rana</First>
        <Last>Ibrahim</Last>
      </Owner>
      <Owner>
        <First>Mohamed</First>
        <Last>Elsekhily</Last>
      </Owner>
    </Owners>
  </Car>
  <Car Color="Red">
    <Brand>BMW</Brand>
    <Model>XS</Model>
    <Year>2019</Year>
    <VIN>98765432</VIN>
    <Engine Valves="">
      <Fuel>
        <Type>Gas</Type>
        <MPG>20</MPG>
      </Fuel>
      <Size>2.1</Size>
      <Cylinders>3</Cylinders>
    </Engine>
    <Owners>
      <Owner>
        <First>Jone</First>
        <Last>Smith</Last>
      </Owner>
      <Owner>
        <First>Anne</First>
        <Last>Arlond</Last>
      </Owner>
    </Owners>
  </Car>
</Cars>

Моя пробная версия xsl:

`<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
        <html><body>
            <h1>Cars</h1>
            <table border="1">
                <tr bgcolor="yellow"> 
                    <td><b>Brand</b></td> 
                    <td><b>Model</b></td> 
                    <td><b>Year</b></td> 
                    <td><b>VIN</b></td> 
                    <td><b>Engine</b></td> 
                </tr>
                <xsl:for-each select="Cars/Car">
                    <xsl:sort select="Brand" />
                    <tr style="font-size: 10pt; font-family: verdana">
                        <td><xsl:value-of select="Brand"/></td>
                        <td><xsl:value-of select="Model"/></td>
                        <td><xsl:value-of select="Year"/></td>
                        <td><xsl:value-of select="VIN"/></td>
                        <td><xsl:value-of select="Engine"/></td>
                    </tr>
                </xsl:for-each>
            </table>
            <h1>Engines</h1>
            <table border="1">
                <tr bgcolor="yellow"> 
                    <td><b>Fuel</b></td> 
                    <td><b>Size</b></td> 
                    <td><b>Cylinders</b></td> 
                </tr>
                <xsl:for-each select="Engines/Engine">
                    <tr style="font-size: 10pt; font-family: verdana">
                        <td><xsl:value-of select="Fuel"/></td>
                        <td><xsl:value-of select="Size"/></td>
                        <td><xsl:value-of select="Cylinders"/></td>
                    </tr>
                </xsl:for-each>
            </table>
      <h1>Fuels</h1>
      <table border="1">
        <tr bgcolor="yellow">
          <td><b>Type</b></td>
          <td><b>MPG</b></td>
        </tr>
        <xsl:for-each select="Fuels/Fuel">
          <tr style="font-size: 10pt; font-family: verdana">
            <td><xsl:value-of select="Type"/></td>
            <td><xsl:value-of select="MPG"/></td>
          </tr>
        </xsl:for-each>
      </table>
            <h1>Owners</h1>
            <table border="1">
                <tr bgcolor="yellow"> 
                    <td><b>First</b></td> 
                    <td><b>Last</b></td> 
                </tr>
                <xsl:for-each select="Owners/Owner">
                    <xsl:sort select="First" />
                    <tr style="font-size: 10pt; font-family: verdana">
                        <td><xsl:value-of select="First"/></td>
                        <td><xsl:value-of select="Last"/></td>
                    </tr>
                </xsl:for-each>
            </table>
        </body> </html>
    </xsl:template>
</xsl:stylesheet>
`

Любая помощь будет оценена. Мне нужен xsl для того, чтобы создать для него HTML,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...