我正在使用XSLT创建动态菜单。在一个DIV中,我必须放置一个不属于该属性的文本。
我的XLST:
<xsl:template match="/MenuConfig">
<div data-sidebar> <--- PROBLEM!!!
<ul class="sidebar list-unstyled">
<xsl:apply-templates />
</ul>
</div>
</xsl:template>
<xsl:template match="Menu | Item">
<li class="{@class}">
<a href="{@location}"><xsl:value-of select="@title"/></a>
<xsl:if test="Item">
<ul>
<xsl:apply-templates select="Item" />
</ul>
</xsl:if>
</li>
</xsl:template>
</xsl:stylesheet>
我的XML(只是一个例子。实际上,XML并不重要):
<MenuConfig>
<Menu name="name-1" location="location 1" title="Menu 1">
<Item name="name-1.1" location="location 1.1.jsp" title="Menu 1.1"/>
<Item name="name-1.2" location="location 1.2.jsp" title="Menu 1.2"/>
<Item name="name-1.3" location="location 1.3.jsp" title="Menu 1.3">
<Item name="name-1.3.1" location="location 1.3.1.jsp" title="Menu 1.3.1"/>
<Item name="name-1.3.2" location="location 1.3.2.jsp" title="Menu 1.3.2"/>
</Item>
<Item name="name-1.4" location="location 1.4.jsp" title="Menu 1.3">
<Item name="name-1.4.1" location="location 1.4.1.jsp" title="Menu 1.4.1"/>
<Item name="name-1.4.2" location="location 1.4.2.jsp" title="Menu 1.4.2"/>
</Item>
</Menu>
我需要的结果是这样的:
<div class="row">
<div class="col-md-3">
<div data-sidebar>
<ul class="sidebar list-unstyled">
<li ><a href="home">Home</a></li>
<li ><a href="pensions/">Pensions</a></li>
<li ><a href="funds/">Funds</a></li>
<li ><a href="savings-and-investments/">Savings and Investments</a></li>
<li ><a href="life-insurance/">Life Insurance</a></li>
<li ><a href="customer-support/">Existing Customers</a></li>
<li ><a href="contact-u/s">Contact Us</a></li>
<li ><a href="about-us/">About Zurich Life</a></li>
</ul>
</div>
</div>
</div>
我需要data-sidebar
这样<div data-sidebar>
,因为我在这个js函数中使用了这个:
/**
* Mobile dropdown sidebar
* This will generate select with options from left menu for small and xsmall devices
* @return {void}
*/
mobileSidebar: (function(){
var current = '';
return function(){
if( !$('[data-sidebar] select').length ){
var $select = $('<select class="sidebar form-control"/>');
$('[data-sidebar] ul li').each(function(){
var $this = $(this);
var active = $(this).hasClass('active') ? 'selected' : '';
ETC...
这个JS功能是由第三方公司制作的,因此无法更改。 当我运行XSLT转换时,收到此错误:
&#34;属性名称&#34;数据侧栏&#34;与元素类型相关联&#34; div&#34;必须遵循&#39; =&#39;字符&#34;
有可能吗?还有另一种方法可以在DIV中写入这个值吗?
我尝试使用id="data-sidebar"
,但它没有用。
由于
答案 0 :(得分:0)
您的xslt无效。变化
<div data-sidebar>
到
<div data-sidebar="">
这样,data-sidebar
将作为属性呈现(带有空内容)。 JS现在可以工作了。