1

私は XML を初めて使用します。この単純な問題を理解できないようです...ノード ID、make、およびモデルを含むテーブルを取得しています...コードは正常に動作しています...しかし、テーブル間頭と体、ノード「john doe」も取得しています..XPath式に何か問題があると思います。

XML:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="lab1.xsl"?>
<labs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="lab.xsd">
   <lab name="FOA2A">
      <responsible>
         <name>John</name>
         <surname>Doe</surname>
      </responsible>
      <computers>
         <computer>
            <id>C001</id>
            <cpu>
               <make>Intel</make>
               <model>Core2duo</model>
               <clockspeed>2.4</clockspeed>
            </cpu>
            <monitor>
               <type>LCD</type>
               <size>17"</size>
            </monitor>
         </computer>
         <computer>
            <id>C002</id>
            <cpu>
               <make>AMD</make>
               <model>Quad</model>
               <clockspeed>3.0</clockspeed>
            </cpu>
            <monitor>
               <type>Plasma</type>
               <size>23"</size>
            </monitor>
         </computer>
         <computer>
            <id>C003</id>
            <cpu>
               <make>AMD</make>
               <model>DoubleQuad</model>
               <clockspeed>4.0</clockspeed>
            </cpu>
            <monitor>
               <type>LED</type>
               <size>32"</size>
            </monitor>
         </computer>
      </computers>
   </lab>
</labs>

XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
   <xsl:template match="/">
      <html>
         <head>TEST</head>
         <body>
            <table border="1">
               <thead>
                  <tr>
                     <td>Computer ID</td>
                     <td>CPU</td>
                     <td>Monitor</td>
                  </tr>
               </thead>
               <tbody>
                  <xsl:apply-templates />
               </tbody>
            </table>
         </body>
      </html>
   </xsl:template>
   <xsl:template match="labs/lab/computers">
      <xsl:for-each select="computer">
         <tr>
            <td>
               <xsl:value-of select="id/text()" />
            </td>
            <td>
               <xsl:value-of select="cpu/make/text()" />
            </td>
            <td>
               <xsl:value-of select="cpu/model/text()" />
            </td>
         </tr>
      </xsl:for-each>
   </xsl:template>
</xsl:stylesheet>
4

1 に答える 1