XSLT 排序与先行兄弟相结合::

标签 xslt sorting

在 foreach 循环中,我想使用前同级::

<for-each..>
    <xsl:sort select="type"/>
    <xsl:when test="preceding-sibling::data[1]/type != type

问题是 foreach 中的“类型”与未排序的前兄弟进行比较
例如
data1/type = 1 
data2/type = 2
data3/type = 1

将在第二个循环中进行比较 silbling=2(原始未排序)和 type=1(因为它已排序)

有办法解决吗?

更新:我的意图如下
before             after
data/type2         type1 value1
data/type1         type1 value2 
data/type1         and speaking in HTML a spacer here (I compare type2:value to preceding-sibling value
data/type2         type2 value1
                   type2 value2

我有一个未排序的地址列表,其中类型是城镇,我需要一个按城镇排序的 HTML 表,并根据值和其他字段做一些事情(该部分正在工作,但由于与前兄弟的比较不是以排序方式工作,我遇到了问题

最佳答案

这个解决方案现在对我有用:

    <xsl:variable name="sortedcopy">
      <xsl:for-each select="node1/node2/node3/data">
        <xsl:sort select="type" order="ascending"/>
        <xsl:copy-of select="current()"/>
      </xsl:for-each>
    </xsl:variable>
    <xsl:variable name="relItems" select="MSXML:node-set($sortedcopy)" />
    <xsl:for-each select="$relItems/data">
      <xsl:if test="not(preceding-sibling::data[1]/id = id)">
        <hr/>
      </xsl:if>
      <xsl:value-of select="val"/>
    </xsl:for-each>

关于XSLT 排序与先行兄弟相结合::,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5980871/

相关文章:

xml - 如何删除默认 namespace 并使用 XSLT 保留其余 namespace ?

xslt - 使用 XSL 查找序列中的值

arrays - 对具有字母数字值的哈希数组进行排序

java - 有条件地分配变量以匹配 xslt 模板中的路径

javascript - 当字符串包含单引号时使用js替换XSL变量的值

xml - 首选项中缺少 Eclipse XSL 选项

java - Java中对象数组的降序选择排序

sorting - 有没有办法为 Doctrine 2 模型指定默认顺序?

python - 在这个算法中使用计数排序有什么好处?

c - 为什么这段代码在选择排序中给出段错误,请解释