Xslt 使用xsl:apply模板在特定结构中循环

Xslt 使用xsl:apply模板在特定结构中循环,xslt,xslt-1.0,xslt-2.0,Xslt,Xslt 1.0,Xslt 2.0,我正在尝试使用xsl:apply模板在下面的结构中创建列表元素。是否可以在不使用xsl:for-each的情况下实现以下输出? 我可以用xsl:for-each实现以下结构,但我想知道是否可以使用xsl:apply模板 下面是我的XML <Properties> <Root> <group-container> <group-title> <title-name&

我正在尝试使用xsl:apply模板在下面的结构中创建列表元素。是否可以在不使用xsl:for-each的情况下实现以下输出? 我可以用xsl:for-each实现以下结构,但我想知道是否可以使用xsl:apply模板

下面是我的XML

<Properties>
    <Root>
        <group-container>
            <group-title>
                <title-name>Packs1</title-name>
                <title-sub-links>
                    <subtitle-name>sub1</subtitle-name>
                </title-sub-links>
                <title-sub-links>
                    <subtitle-name>sub2</subtitle-name>
                </title-sub-links>
            </group-title>
            <group-title>
                <title-name>Packs2</title-name>
                <title-sub-links>
                    <subtitle-name>abc</subtitle-name>
                </title-sub-links>
                <title-sub-links>
                    <subtitle-name>xyz</subtitle-name>
                </title-sub-links>
            </group-title>
        </group-container>
        <group-title>
            <title-name>link title 1</title-name>
        </group-title>
        <group-title>
            <title-name>link xyz</title-name>
        </group-title>
    </Root>
</Properties>

包装1
sub1
sub2
包装2
abc
xyz
链接标题1
链接xyz
XSL


  • 收到的输出

    <div class="col-9 tab">
        <ul>
            <li>Packs1</li>
            <li>Packs2</li>
            <li>sub1</li>
            <li>sub2</li>
            <li>abc</li>
            <li>xyz</li>
        </ul>
    </div>
    
    
    
    • 包装1
    • 包装2
    • sub1
    • sub2
    • abc
    • xyz
    预期产量

    <div class="col-9 tab">
        <ul>
            <li>Packs1</li>
            <li>sub1</li>
            <li>sub2</li>
        </ul>
        <ul>
            <li>Packs2</li>
            <li>abc</li>
            <li>xyz</li>
        </ul>
    </div>
    
    
    
    • 包装1
    • sub1
    • sub2
    • 包装2
    • abc
    • xyz
    我想(!)你想做:

    <xsl:stylesheet
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    
        <xsl:template match="/">
            <div class="col-9 tab">
                <xsl:apply-templates select = "/Properties/Root/group-container/group-title"/>
            </div>
        </xsl:template>
    
        <xsl:template match = "group-title">
            <ul>
                <li>
                    <xsl:value-of select="title-name"/>
                </li>
                <xsl:apply-templates select = "title-sub-links"/>
             </ul>
        </xsl:template>
    
        <xsl:template match = "title-sub-links">
            <li>
                <xsl:value-of select="subtitle-name"/>
            </li>
        </xsl:template>
    
    </xsl:stylesheet>
    
    
    
  • <xsl:stylesheet
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    
        <xsl:template match="/">
            <div class="col-9 tab">
                <xsl:apply-templates select = "/Properties/Root/group-container/group-title"/>
            </div>
        </xsl:template>
    
        <xsl:template match = "group-title">
            <ul>
                <li>
                    <xsl:value-of select="title-name"/>
                </li>
                <xsl:apply-templates select = "title-sub-links"/>
             </ul>
        </xsl:template>
    
        <xsl:template match = "title-sub-links">
            <li>
                <xsl:value-of select="subtitle-name"/>
            </li>
        </xsl:template>
    
    </xsl:stylesheet>