我的导航 xsl 模板中缺少什么

问题描述 投票:0回答:1

我正在尝试找出适合我的 html 导航的完美 xsl 模板。

这是html代码

<ul class="menu-section">
  <li class="menu-item-has-children">
    <a href="#">Accounts <i class="ion ion-ios-arrow-down"></i></a>
    <div class="menu-subs menu-column-1">
      <ul>
        <li><a href="#">Login and Register</a></li>
        <li><a href="#">Help and Question</a></li>
        <li><a href="#">Privacy and Policy</a></li>
        <li><a href="#">Term of Cookies</a></li>
      </ul>
    </div>
  </li>
  <li><a href="#">Contact</a></li>
</ul>

这是我的 XSL 模板:

<?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" indent="yes"/>
    <xsl:template match="/">
        <xsl:call-template name="menu"/>
    </xsl:template>
    <xsl:template name="menu">
        <ul id="wixmenu" class="menu-section">
            <xsl:apply-templates select="MENU/ITEM"/>
        </ul>
    </xsl:template>
    <xsl:template match="ITEM">
        <li class="menu-item-has-children">
            <a href="{URL}#" target="{TARGET}">
                <xsl:value-of select="TITLE"/>
                <i class="ion"/>
                <xsl:value-of select="ICON"/>
            </a>
            <xsl:if test="ITEM">
                <div class="menu-subs menu-column-1">
                    <ul>
                        <xsl:apply-templates select="ITEM"/>
                    </ul>
                </div>
            </xsl:if>
        </li>
    </xsl:template>
</xsl:stylesheet>

得到的结果是:

<ul class="menu-section">
  <li class="menu-item-has-children">
    <a href="#">Accounts <i class="ion ion-ios-arrow-down"></i></a>
    <div class="menu-subs menu-column-1">
      <ul>
        <li class="menu-item-has-children"><a href="#">Login and Register</a></li>
        <li class="menu-item-has-children"><a href="#">Help and Question</a></li>
        <li class="menu-item-has-children"><a href="#">Privacy and Policy</a></li>
        <li class="menu-item-has-children"><a href="#">Term of Cookies</a></li>
      </ul>
    </div>
  </li>
  <li class="menu-item-has-children"><a href="#">Contact</a></li>
</ul>

我想要什么 我希望子元素 [登录和注册、帮助和问题、隐私和政策以及 Cookie 条款] 不具有“menu-item-has-children”类。我只是想让 xsl 模板生成原始的 html 代码。

html css xslt
1个回答
0
投票

这是模板的一个版本,其中仅当当前

class
元素具有
menu-item-has-children
子元素时才添加值为
ITEM
ITEM
属性。

<?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" indent="yes"/>
    <xsl:template match="/">
        <xsl:call-template name="menu"/>
    </xsl:template>
    <xsl:template name="menu">
        <ul id="wixmenu" class="menu-section">
            <xsl:apply-templates select="MENU/ITEM"/>
        </ul>
    </xsl:template>
    <xsl:template match="ITEM">
        <li>
            <xsl:if test="ITEM">
                <xsl:attribute name="class">menu-item-has-children</xsl:attribute>
            </xsl:if>
            <a href="{URL}#" target="{TARGET}">
                <xsl:value-of select="TITLE"/>
                <i class="ion"/>
                <xsl:value-of select="ICON"/>
            </a>
            <xsl:if test="ITEM">
                <div class="menu-subs menu-column-1">
                    <ul>
                        <xsl:apply-templates select="ITEM"/>
                    </ul>
                </div>
            </xsl:if>
        </li>
    </xsl:template>
</xsl:stylesheet>

顺便说一句,我想知道你的情况

<i class='ion'/><xsl:value-of select="ICON"/>

您是否打算将

ICON
元素的文本作为
i
元素的子节点?

<i class='icon'><xsl:value-of select="ICON"/></i>
© www.soinside.com 2019 - 2024. All rights reserved.