我正在尝试找出适合我的 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 代码。
这是模板的一个版本,其中仅当当前
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>