需要xslt输出以跟随xml

时间:2013-06-17 09:01:49

标签: java xml xslt

     <?xml version="1.0" encoding="utf-8"?>
     <ConfigurationMappings>
     <ConfigurationMap>
     <Widget Type="All" Include="true" NeedsMandatoryEffectConfiguration="true"/>
     <Trigger Type="Show" />
     <ConfigurationEffects>
     <Effect>1</Effect>
     <Effect>2</Effect>
     <Effect>3</Effect>
     <Effect>9</Effect>
     </ConfigurationEffects>
     </ConfigurationMap>
     <ConfigurationMap>
     <Widget Type="All" Include="true" NeedsMandatoryEffectConfiguration="true"/>
     <Trigger Type="Hide" />
     <ConfigurationEffects>
     <Effect>1</Effect>
     <Effect>2</Effect>
     <Effect>3</Effect>
     <Effect>9</Effect>
     </ConfigurationEffects>
     </ConfigurationMap>
     </ConfigurationMappings>

需要为上面的XML输入编写xsl。因为输出将以widget类型的形式显示all触发器类型show需要输出所有效果 需要有关如何编写xsl的帮助,因为我不知道xsl。我的项目需要这个

我从我自己的

写下了xsl
<tr>
  <td><xsl:value-of select="ConfigurationMappings/ConfigurationMap/Widget/@Type"/></td>
  <td><xsl:value-of select="ConfigurationMappings/ConfigurationMap/Trigger/@Type"/></td>
  <td><xsl:value-of select="ConfigurationMappings/ConfigurationMap/ConfigurationEffects/Effect"/></td>
 </tr>

以下列格式提供输出:

Widget Trigger Effects
----------------------------
All     Show     1

但我希望以下格式输出 小工具触发效果

---------------------------
All     Show     1
--------------------------
All     Show     2
--------------------------
All     Show     3
-------------------------
All     Show     9
----------------------------
All     Hide     1
---------------------------
All     Hide     3
--------------------------
All     Hide     6
----------------------------
All     Hide     9
---------------------------------

请帮帮我 忽略添加的子标题(----)以发布问题

1 个答案:

答案 0 :(得分:1)

因此,您希望每个包含效果编号的Effect元素有一行以及相应的窗口小部件类型和触发器类型? <怎么样

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="html" />

  <xsl:template match="/">
    <html>
      <body>
        <table>
          <tr><th>Widget</th><th>Trigger</th><th>Effects</th></tr>
          <xsl:apply-templates select="
           ConfigurationMappings/ConfigurationMap/ConfigurationEffects/Effect" />
        </table>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="Effect">
    <tr>
      <td><xsl:value-of select="../../Widget/@Type"/></td>
      <td><xsl:value-of select="../../Trigger/@Type"/></td>
      <td><xsl:value-of select="."/></td>
    </tr>
  </xsl:template>
</xsl:stylesheet>

这将为每个 Effect元素触发第二个模板一次,然后我们从那里导航到属于该属性的WidgetTrigger元素相同的ConfigurationMap