使用XSLT在DIV中插入纯文本

时间:2014-10-14 10:37:48

标签: jquery css xslt

我正在使用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",但它没有用。

由于

1 个答案:

答案 0 :(得分:0)

您的xslt无效。变化

<div data-sidebar>

<div data-sidebar="">

这样,data-sidebar将作为属性呈现(带有空内容)。 JS现在可以工作了。