在xslt中的每个循环上使用a的整数

时间:2012-10-30 11:37:17

标签: xslt foreach

我正在尝试使用XSLT根据它在XML中找到的组数生成动态类。例如,XML中将有X个组,所有组都有子节点。我需要for each循环根据列表中的组号动态创建一个类名。我可以毫无问题地填充组名,但是我找不到有关如何将系统生成的部分附加到类的任何明确信息。 例如:

  • groupblue class =“groupblue-1”
  • grouporange class =“grouporange-2”
  • groupred class =“groupred-3”

Etc等,适用于XML中的每个组。

我希望这是有道理的,有人可以提供帮助!提前谢谢。

编辑:

XML

<group>
  <title>Title Content</title>
  <text>Content 1</text>
</group>
<group>
  <title>Title Content</title>
  <text>Content 2</text>
</group>
<group>
  <title>Title Content</title>
  <text>Content 3</text>
</group>

HTML输出

<div id="titlecontent-1">
  text from group 1 content
</div>
<div id="titlecontent-2">
  text from group 2 content
</div>
<div id="titlecontent-3">
  text from group 3 content
</div>

1 个答案:

答案 0 :(得分:2)

此转化

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="group">
     <div id="{translate(title, ' ', '')}-{position()}">
       <xsl:value-of select="text"/>
     </div>
 </xsl:template>
 <xsl:template match="text()"/>
</xsl:stylesheet>

应用于格式良好的XML文档(将提供的XML片段包装到顶部元素中):

<t>
    <group>
        <title>Title Content</title>
        <text>Content 1</text>
    </group>
    <group>
        <title>Title Content</title>
        <text>Content 2</text>
    </group>
    <group>
        <title>Title Content</title>
        <text>Content 3</text>
    </group>
</t>

产生想要的结果

<div id="TitleContent-1">Content 1</div>
<div id="TitleContent-2">Content 2</div>
<div id="TitleContent-3">Content 3</div>