XSLT for-each,排序无法正常工作

德罗森

我在使一个非常简单的xsl:sort起作用时遇到问题。我敢肯定解决方案是微不足道的,但是从此处类似问题以及其他资源中获得的示例并没有带我找到解决方案。

样本XML

<Package version="1.0">
<Payload>
<Filenames>
<Filename>MDP_939529_0_20151006104742_2.tif</Filename>
<Filename>MDP_939529_0_20151006104742_3.tif</Filename>
<Filename>MDP_939529_0_20151006104742_1.tif</Filename>
</Filenames>
<DocumentType>FOO</DocumentType>
<Timestamp>2015-10-26T15:42:04.902-07:00</Timestamp>
<PayloadContext>
<Item name="Company ID">0</Item>
<Item name="Office ID">0</Item>
</PayloadContext>
</Payload>
</Package>

我的XSLT是

<?xml version='1.0' ?>
<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:output 
        method="xml" 
        version="1.0" 
        encoding="UTF-8" 
        indent="yes" 
        omit-xml-declaration="yes"/>
    <xsl:strip-space elements="*"/>

  <!-- global template to copy everything that doesn't match the other templates -->
  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="/MDXPackage/Payload/Filenames">
    <Filenames>
       <xsl:for-each select="//MDXPackage/Payload/Filenames/Filename">
         <xsl:sort select="Filename" data-type="text" />
            <Filename>
                <xsl:value-of select="//MDXPackage/Payload/Filenames/Filename"/>
            </Filename>
       </xsl:for-each>
   </Filenames>
  </xsl:template>
</xsl:stylesheet>

我的结果包含

<Filenames>
<Filename>MDP_939529_0_20151006104742_2.tif</Filename>
<Filename>MDP_939529_0_20151006104742_2.tif</Filename>
<Filename>MDP_939529_0_20151006104742_2.tif</Filename>
</Filenames>

而不是期望的

<Filenames>
<Filename>MDP_939529_0_20151006104742_1.tif</Filename>
<Filename>MDP_939529_0_20151006104742_2.tif</Filename>
<Filename>MDP_939529_0_20151006104742_3.tif</Filename>
</Filenames>

提前致谢

大卫

基里尔·波兰丘克(Kirill Polishchuk)

更改为此,它将产生期望的结果。

<xsl:template match="Filenames">
  <xsl:copy>
    <xsl:for-each select="Filename">
      <xsl:sort select="." data-type="text" />
      <xsl:copy-of select="."/>
    </xsl:for-each>
  </xsl:copy>
</xsl:template>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

XSLT for-each,排序无法正常工作

来自分类Dev

XSLT contains()无法正常工作

来自分类Dev

Java XSLT无法正常工作

来自分类Dev

XSLT translate()无法正常工作

来自分类Dev

使用XSLT分组数据无法完全正常工作

来自分类Dev

xslt从xml读取单独的元素,无法正常工作

来自分类Dev

在 xslt 3.0 中使用累加器无法正常工作

来自分类Dev

XSLT对多个for-each进行排序

来自分类Dev

Xslt排序编号

来自分类Dev

通过XSLT中的onclick事件传递变量无法正常工作

来自分类Dev

XSLT工作太慢

来自分类Dev

XSLT工作太慢

来自分类Dev

XSLT for-each迭代

来自分类Dev

XSLT无法处理实体

来自分类Dev

XSL排序无法正常工作

来自分类Dev

集合排序无法正常工作

来自分类Dev

XSLT 2.0中的元素排序

来自分类Dev

XSLT Number节点,无需排序

来自分类Dev

xslt:按查找条件排序

来自分类Dev

使用变量的XSLT动态排序

来自分类Dev

XSLT复杂的排序和分组

来自分类Dev

XSLT以任意顺序排序输入

来自分类Dev

对嵌套的 XSLT for-each 循环中的元素进行排序

来自分类Dev

为什么我的XSLT格式在Windows 10操作系统上的Microsoft Edge中无法正常工作?

来自分类Dev

使用XSLT将XML中的标签转换为另一种格式无法正常工作

来自分类Dev

xslt 1.0中的for-each

来自分类Dev

XSLT for-each在xml上

来自分类Dev

无法访问XSLT文件

来自分类Dev

使用XSLT无法匹配模式