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 查找XSLT中具有最大子节点数的节点_Xml_Xslt - Fatal编程技术网

Xml 查找XSLT中具有最大子节点数的节点

Xml 查找XSLT中具有最大子节点数的节点,xml,xslt,Xml,Xslt,我有下面的XML,我想获得AccountData的Id和状态以及最大匹配计数。所以结果应该包含Id=1000349827和状态=trusted。如何在XSLT v1中做到这一点: 1000349826 可信的 医生 可移动的 1000349827 可信的 医生 鼻涕虫 可移动的 手机2 1000349828 可信的 医生 解决方案根据Martin的回答: <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet versi

我有下面的XML,我想获得AccountData的Id和状态以及最大匹配计数。所以结果应该包含Id=1000349827和状态=trusted。如何在XSLT v1中做到这一点:


1000349826
可信的
医生
可移动的
1000349827
可信的
医生
鼻涕虫
可移动的
手机2
1000349828
可信的
医生

解决方案根据Martin的回答:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
    <xsl:output method="text" indent="yes"/>
    <xsl:template match="/">
      <xsl:apply-templates select="Body/LookupCustomersRs/CustomersData/CustomerData/AccountData">
        <xsl:sort select="count(Matches/Match)" order="descending"/>
      </xsl:apply-templates>
    </xsl:template>
  <xsl:template match="Body/LookupCustomersRs/CustomersData/CustomerData/AccountData">
    <xsl:if test="position()=1">
      <xsl:text>Id=</xsl:text>
      <xsl:value-of select="Id"/>
      <xsl:text>,</xsl:text>
      <xsl:text>status=</xsl:text>
      <xsl:value-of select="status"/>
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>

身份证=
,
地位=

XSLT 1选择具有某个最大值的项的方法是使用
为每个
应用模板或
处理所有项,并对要计算最大值的值进行嵌套
排序,然后仅输出最后一个(如果按
升序排序)或第一个(如果您按降序排序,请处理
//AccountData
并按
计数(匹配项/匹配项)
进行排序。感谢您提供有关排序的信息,它确实帮助了我。