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
如何使用XSLT从XML中读取所有内部递归值_Xml_Xslt_Xslt 1.0_Wso2esb_Xslt Grouping - Fatal编程技术网

如何使用XSLT从XML中读取所有内部递归值

如何使用XSLT从XML中读取所有内部递归值,xml,xslt,xslt-1.0,wso2esb,xslt-grouping,Xml,Xslt,Xslt 1.0,Wso2esb,Xslt Grouping,需要从递归XML结构的所有级别提取值。所有级别的结构都是相同的 <regPackagingHierarchyList> <RegistrationPackagingHierarchy> <recordId>Level0</recordId> <regParentPackagingHierarchy> <RegistrationPackagingHierarchy> <re

需要从递归XML结构的所有级别提取值。所有级别的结构都是相同的

<regPackagingHierarchyList>
  <RegistrationPackagingHierarchy>
    <recordId>Level0</recordId>
    <regParentPackagingHierarchy>
      <RegistrationPackagingHierarchy>
        <recordId>level5</recordId>
        <regParentPackagingHierarchy>
          <RegistrationPackagingHierarchy>
            <recordId>level4</recordId>
            <regParentPackagingHierarchy>
              <RegistrationPackagingHierarchy>
                <recordId>level3</recordId>
                <regParentPackagingHierarchy>
                  <RegistrationPackagingHierarchy>
                    <recordId>level2</recordId>
                    <regParentPackagingHierarchy>
                      <RegistrationPackagingHierarchy>
                        <recordId>level1</recordId>
                      </RegistrationPackagingHierarchy>
                    </regParentPackagingHierarchy>
                  </RegistrationPackagingHierarchy>
                </regParentPackagingHierarchy>
              </RegistrationPackagingHierarchy>
            </regParentPackagingHierarchy>
          </RegistrationPackagingHierarchy>
        </regParentPackagingHierarchy>
      </RegistrationPackagingHierarchy>
    </regParentPackagingHierarchy>
  </RegistrationPackagingHierarchy>
</regPackagingHierarchyList>

0级
五级
四级
三级
二级
一级
预期结果应采用以下格式 一级、二级、三级、四级、五级

1.0中的一种方式可以是:

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

<xsl:output method="xml" />

<xsl:template match="/">
    <xsl:for-each select="//regParentPackagingHierarchy//recordId">
        <xsl:sort select="position()" order="descending" />
        <xsl:value-of select="." />
        <xsl:if test="position() != last()">
            <xsl:text>,</xsl:text>
        </xsl:if>
    </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

,

编辑:

<xsl:value-of select="concat('Count(regPackagingHierarchyList) = ', count(//regPackagingHierarchyList))"/>
<xsl:value-of select="concat('Count(RegistrationPackagingHierarchy) = ', count(//RegistrationPackagingHierarchy))"/>

编辑2:

<xsl:value-of select="concat('Count(regPackagingHierarchyList) = ', count(//regPackagingHierarchyList))"/>
<xsl:value-of select="concat('Count(RegistrationPackagingHierarchy) = ', count(//RegistrationPackagingHierarchy))"/>



您是否有两个
RegistrationPackagingHierarchy
元素是彼此的兄弟元素,或者每个父元素只有一个
RegistrationPackagingHierarchy
子元素?它将始终是一个子元素@TimCThank。。@VebbieHow将子节点计数设为或时,其工作正常。预期输出为计数(RegPackageHierarchyList)=17@DhanaSekhar:在答案中添加了这个。@Vibbie,还有一个问题。这是重复的标记,在运行XSLT时,我将所有内容组合在一起。比如level1、level2、level3、level4、level5level1、level2、level3、level4、level5。你能帮我修一下吗。预期是在第一次迭代中,我应该得到迭代-1::level1,level2,level3,level4,level5迭代2:level1,level2,level3,level4,level5我将等待您的答复。这里更新了这是XMl结构如何成为父包列表父包列表父包列表