gpt4 book ai didi

xml - XSLT 中的累积变量

转载 作者:行者123 更新时间:2023-12-03 16:12:41 26 4
gpt4 key购买 nike

我有一个表格,每行由 7 列组成,以 5 个单元格的形式组成:

 <ROW>
<CELL ROWSPAN="1" COLSPAN="1">1</CELL>
<CELL ROWSPAN="1" COLSPAN="1">Mandrel</CELL>
<CELL ROWSPAN="1" COLSPAN="1">1</CELL>
<CELL ROWSPAN="1" COLSPAN="2">H079249303</CELL>
<CELL ROWSPAN="1" COLSPAN="2">H079249301</CELL>
</ROW>

现在我的模板匹配每个人 <CELL>并将它们变成 <entry> ,对于那些拥有 @COLSPAN 的人值大于 1(如上面的最后两个单元格),我需要一个 namestnamend属性,例如,上面的代码将变成:
  <row>
<entry>1</entry>
<entry>Mandrel</entry>
<entry>1</entry>
<entry namest="c4" nameend="c5">H079249303</entry>
<entry namest="c6" nameend="c7">H079249301</entry>
</row>

我能够跟踪前面 sibling 的数量,但真的不知道如何对 @COLSPAN 求和。由于 XSLT 不允许变量递增,因此所有前面同级的属性。

感谢帮助。

最佳答案

sum功能,即:

XSLT :

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

<xsl:template match="ROW">
<row>
<xsl:apply-templates select="CELL"/>
</row>
</xsl:template>

<xsl:template match="CELL">
<entry>
<xsl:if test="@COLSPAN > 1">
<xsl:attribute name="namest">
<xsl:value-of select="concat('c', sum(preceding-sibling::CELL/@COLSPAN) + 1)"/>
</xsl:attribute>

<xsl:attribute name="nameend">
<xsl:value-of select="concat('c', sum(preceding-sibling::CELL/@COLSPAN) + @COLSPAN)"/>
</xsl:attribute>
</xsl:if>

<xsl:value-of select="."/>
</entry>
</xsl:template>

</xsl:stylesheet>

输出 :
<row>
<entry>1</entry>
<entry>Mandrel</entry>
<entry>1</entry>
<entry namest="c4" nameend="c5">H079249303</entry>
<entry namest="c6" nameend="c7">H079249301</entry>
</row>

关于xml - XSLT 中的累积变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7150627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com