以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  关于XSLT的for-each用法  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=44321)


--  作者:ismezy
--  发布时间:3/23/2007 4:48:00 PM

--  关于XSLT的for-each用法
原格式如下:
<span row="1" col="1"/>
<span row="1" col="2"/>
<span row="2" col="1"/>
.....................

目标格式:
<row index="1">
  <col index="1"/>
</row>
.........

应该如何处理?


--  作者:Qr
--  发布时间:3/24/2007 11:53:00 AM

--  
<xsl:for-each select="span">
<xsl:element name="row">
<xsl:attribute name="index">
<xsl:value-of select="@row">
</xsl:attribute>
<xsl:element name="col">
<xsl:attribute name="index">
<xsl:value-of select="@col">
</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:for-each>
--  作者:jx
--  发布时间:3/24/2007 3:40:00 PM

--  
我很喜欢xsl:for-each的。
--  作者:ismezy
--  发布时间:3/26/2007 9:06:00 AM

--  
不好意思,2楼的给的不是我想要的结果,可能是我没有说清楚

我再把目标格式描述详细一点
<Row index=1>
  <Col index=1>
  <Col index=2>
</Row>
<Row index=2>
<Col index=1>
<Col index=2>
</Row>

也就是说Col成为Row的子结点


--  作者:ismezy
--  发布时间:3/26/2007 9:08:00 AM

--  
用2楼的方法结果如下:

        <row index="1">
          <col index="1" />
        </row>
        <row index="2">
          <col index="1" />
        </row>
        <row index="3">
          <col index="1" />
        </row>


--  作者:Qr
--  发布时间:3/26/2007 9:58:00 AM

--  
http://bbs.w3china.org/dispbbs.asp?BoardID=8&id=20240
--  作者:hexun831012
--  发布时间:3/26/2007 9:17:00 PM

--  
用for-each不如用apply-templates
模板才是xsl的王道
--  作者:ismezy
--  发布时间:3/27/2007 8:57:00 AM

--  
解决了,用的其他方法
  <xsl:key name="row" match="@row" use="."/>
   <xsl:for-each select="span/@row[generate-id()=generate-id(key('row',.))]">
        <Row Index="{current()+1}">
             <xsl:for-each select="../../span[@row = current()]">
                  <Cell Index="{@col}">
                       <xsl:value-of select="@text"/>
                   </Cell>
                </xsl:for-each>
         </Row>
    </xsl:for-each>
--  作者:hexun831012
--  发布时间:3/27/2007 9:06:00 AM

--  
你可以用<xsl:variable>或<xsl:param>
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
65.918ms