Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XSL Sort by position()给出奇怪的结果_Xml_Xslt_Sorting - Fatal编程技术网

Xml XSL Sort by position()给出奇怪的结果

Xml XSL Sort by position()给出奇怪的结果,xml,xslt,sorting,Xml,Xslt,Sorting,我有一个XML文件,我想按文档顺序对其内容进行排序(基本上按照项目的写出顺序) 我目前使用以下代码: <xsl:template match="/Error"> <xsl:apply-templates> <xsl:sort select="position()" order="descending" /> </xsl:apply-templates> </xsl:template>

我有一个XML文件,我想按文档顺序对其内容进行排序(基本上按照项目的写出顺序)

我目前使用以下代码:

<xsl:template match="/Error">
        <xsl:apply-templates>
            <xsl:sort select="position()" order="descending" />
        </xsl:apply-templates>
</xsl:template>

<xsl:template match="/Error/Warning">
<!-- etc -->
</xsl:template>

示例XML(为便于阅读而替换数据):


代码1
代码2
代码3
代码4
代码5
然而,这似乎给出了奇怪的结果,因为它似乎没有特定的顺序!有什么想法吗


删除排序似乎可以使其正常工作-这是可靠地按写顺序排序还是不保证?

是否缺少要将模板应用到的节点

例如:

<xsl:apply-templates select="/Error/messages" />


在处理xslt问题时,最好使用xml。

是否缺少要将模板应用到的节点

例如:

<xsl:apply-templates select="/Error/messages" />


在处理xslt问题时,最好使用您正在使用的xml。

按文档顺序对所选节点集进行操作,删除排序元素,这将根据需要工作。请参阅:

按文档顺序对所选节点集进行操作,删除排序元素,这将根据需要工作。看:

不应该是这样吗?是否在应用模板上使用“选择”属性

<xsl:template match="/Error">
  <xsl:apply-templates select="./Warning" />
</xsl:template>

<xsl:template match="/Error/Warning">
  <!-- etc -->
</xsl:template>


您应该按照输出在XML源中的顺序获取输出。

应该是这样吗?是否在应用模板上使用“选择”属性

<xsl:template match="/Error">
  <xsl:apply-templates select="./Warning" />
</xsl:template>

<xsl:template match="/Error/Warning">
  <!-- etc -->
</xsl:template>


您应该按照XML源中的顺序获取输出。

您没有提供有问题的输出,也没有解释没有显示的输出有什么问题。此外,您没有指定真正需要排序的内容。这个问题是不完整和未定义的。请更正您的问题。看起来您的模式是错误的,应该是
ErrorLog/Warning
。您也在按文档顺序排序,所以不需要这样做。@Dimitre输出只是按随机顺序,我觉得显示这一点不重要?-更新了问题以便更清楚@Alejandro我想订购
中的所有内容。Paul Butchers下面的回答可以满足我的需要。您没有提供有问题的输出,也没有解释您没有显示的输出有什么问题。此外,您没有指定真正需要排序的内容。这个问题是不完整和未定义的。请更正您的问题。看起来您的模式是错误的,应该是
ErrorLog/Warning
。您也在按文档顺序排序,所以不需要这样做。@Dimitre输出只是按随机顺序,我觉得显示这一点不重要?-更新了问题以便更清楚@Alejandro我想订购
中的所有内容。Paul Butchers下面的回答很适合我的需要。@Chris如果您想过滤错误的子项,并且只包含警告元素,那么最好使用此答案中定义的
xsl:apply templates/@select
,而不是只使用
xsl:template/@match
@Chris如果您想过滤错误的子项,而且只有警告元素,最好使用本答案中定义的
xsl:apply-templates/@select
,而不仅仅是使用
xsl:template/@match