0

ファイルに次のxmlコンテンツがあります。

<testsuite errors="1" failures="1" name="unittest.suite.TestSuite" tests="3" time="6.540">
  <properties>
    <property name="comp1" value="0.0.0.0:80=0.0.1"/>
    <property name="comp2" value="12.34.56.78:80=0.0.1"/>

次のようなテーブルを作成したい

Name  Value
comp1 0.0.0.0:80=0.0.1
comp2 12.34.56.78:80=0.0.1

xslを使用します。私は以下を試しました

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>    
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Name</th>
        <th>Value</th>
      </tr>
      <xsl:for-each select="testsuite/properties/property">
      <tr>
        <td><xsl:value-of select="name"/></td>
        <td><xsl:value-of select="value"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet> 

これは空のテーブルを提供するだけです。これを正しく行う方法は?私はインターネット上で複雑な例を見つけただけです。誰かがそのようなことについての良いチュートリアルを知っているなら、私も歓迎します。

4

2 に答える 2

3

@は属性に使用されます。使用しない場合は、デフォルトで要素として扱われます。

したがって、XMLが次のようになっている場合、コードは正常に機能します。

<testsuite errors="1" failures="1" name="unittest.suite.TestSuite" tests="3" time="6.540">
  <properties>
    <property>
      <name>comp1</name>
      <value>0.0.0.0:80=0.0.1</value>
    </property>
    <property>
      <name>comp2</name>
      <value>12.34.56.78:80=0.0.1</value>
    </property>
    ..........
    ........

そしてここにあなたの修正されたコードがあります、の使用法を観察してください@

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>    
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Name</th>
        <th>Value</th>
      </tr>
      <xsl:for-each select="testsuite/properties/property">
      <tr>
        <td><xsl:value-of select="@name"/></td>
        <td><xsl:value-of select="@value"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet> 
于 2012-11-22T14:24:18.937 に答える
1

試す

    <td><xsl:value-of select="@name"/></td>
    <td><xsl:value-of select="@value"/></td>

@属性にアクセスするときは、名前の前に必要です。

于 2012-11-22T14:11:35.820 に答える