应用路径表达式后的文档重新排序

时间:2015-06-29 22:59:09

标签: xslt xpath

以下样式表:

TypeToken

输出:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" exclude-result-prefixes="#all"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:xs="http://www.w3.org/2001/XMLSchema">

   <xsl:output method="xml" indent="yes"/>

   <xsl:template name="main">

      <xsl:variable name="a">
         <a/>
      </xsl:variable>

      <xsl:variable name="b">
         <b/>
      </xsl:variable>

      <for-each1>
         <xsl:for-each select="reverse(($a, $b))">
            <xsl:copy-of select="."/>
         </xsl:for-each>
      </for-each1>

      <for-each2>
         <xsl:for-each select="reverse(($a, $b))/*">
            <xsl:copy-of select="."/>
         </xsl:for-each>
      </for-each2>

   </xsl:template>

</xsl:stylesheet>
  • 为什么在应用路径表达式后重新排序序列?
  • 这符合标准吗?如果是,那么哪个部分谈到它?

我使用的是Saxon 9.6.0.6。

1 个答案:

答案 0 :(得分:0)

Michael Kay获得答案:

  

使用“/”运算符的表达式的结果被排序   文件订单。

     

单独树中节点之间的文档顺序是   依赖于实现,因此$ a可能在$ b之前或之后出现   取决于实施。

解决方法是使用for映射:

for $n in reverse(($a, $b)) return $n/*