首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在<div class=“文件包装清除”>中添加嵌入将导致<div id="ds-options-wrapper">嵌套在<div id="ds-body">中。

在<div class=“文件包装清除”>中添加嵌入将导致<div id="ds-options-wrapper">嵌套在<div id="ds-body">中。
EN

Stack Overflow用户
提问于 2014-09-01 19:14:43
回答 1查看 217关注 0票数 1

当我将JavaScript嵌入片段插入到幻影主题的item-view.xsl<div class="file-wrapper clearfix"></div>容器的末尾时,出于某种原因,在page-navigation.xsl中找到的<div id="ds-options-wrapper"></div>是在<div id="ds-body"></div>之外生成的。

我在<div class="file-wrapper clearfix"></div>中编写了额外的XSL,只有当一个项目在mets.xml中有DOI可用时,才包括JavaScript嵌入。每当DOI可用时,嵌入就会出现,但会导致<div id="ds-options-wrapper"></div>成为<div id="ds-body"></div>的一个子级,而不是它应该是的兄弟级。当没有嵌入时,<div id="ds-options-wrapper"></div><div id="ds-body"></div>的兄弟,并直接遵循默认的幻影模板。

为什么会发生这种情况?我希望<div id="ds-options-wrapper"></div>能和<div id="ds-body"></div>保持兄弟关系

以下是生成的DOM在嵌入和不嵌入时的大致轮廓:

嵌入的 (psuedocode)

代码语言:javascript
复制
<!-- id=" and class=" omitted -->
<div ds-content>
     <div ds-body>
          <div aspect_..._div_item-view>
               <div item-summary-view-metadata>
               </div>
               <div file-list>
                    <div file-wrapper clearfix>
                          thumbnail-wrapper
                          file metadata
                          <!-- EMBED APPEARS HERE -->
                          <div embed> </div>
                    </div>
                    <div item-summary-view-metadata>
                         URI
                         Date
                         etc...
                    </div>
                    <h2> appears in... </h2>
                    <ul> referenceSet-list </ul>
               </div>
          </div>
          <!-- ds-options-wrapper nested WITHIN ds-body for some reason -->
          <div ds-options-wrapper>
               .....
          </div>
     </div>
</div>

没有嵌入

代码语言:javascript
复制
<!-- id=" and class=" omitted -->
<div ds-content>
     <div ds-body>
          <div aspect_..._div_item-view>
               <div item-summary-view-metadata>
               </div>
               <div file-list>
                    <div file-wrapper clearfix>
                          thumbnail-wrapper
                          file metadata
                          <!-- NO EMBED HERE -->
                    </div>
               </div> <!-- file-list ends here ?? -->
               <div item-summary-view-metadata>
                         URI
                         Date
                         etc...
               </div>
               <h2> appears in... </h2>
               <ul referenceSet-list> </ul>
          </div>
     </div>
     <!-- ds-options-wrapper nested OUTSIDE ds-body like normal -->
     <div ds-options-wrapper>
          .....
     </div>
</div>

虽然这看起来没什么关系,

这里是我插入到item-view.xsl 中的代码

代码语言:javascript
复制
<xsl:template match="mets:file">
        <xsl:param name="context" select="."/>
        <div class="file-wrapper clearfix">
            <div class="thumbnail-wrapper">
                ....
            </div>
            <div class="file-metadata">
                ....
            </div>
            <!-- INSERTED CODE TO GENERATE JS EMBED HERE -->
            <!-- Only output is either .... -->
            <xsl:variable name="quoteChar">"</xsl:variable>
            <xsl:choose>
                <xsl:when test="//dim:field[@element='identifier'][@qualifier='doi']">
                    <xsl:variable name="doiVar" select="//dim:field[@element='identifier'][@qualifier='doi']"></xsl:variable>
                    <!-- HERE -->
                    <div data-badge-type='medium-donut' class='altmetric-embed' data-badge-details='right' data-doi='{$doiVar}'></div>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:if test="contains(//dim:field[@element='identifier'][@qualifier='citation'],'doi')">
                        <xsl:variable name="parseThis" select="//dim:field[@element='identifier'][@qualifier='citation']"></xsl:variable>

                        <xsl:variable name="tokenized" select="str:split($parseThis, 'doi:')" />
                        <xsl:for-each select="$tokenized">
                            <xsl:variable name="curtoken" select="."/>
                            <xsl:if test="contains($curtoken, '10.') and contains($curtoken, '/')">
                                <xsl:variable name="newtext">
                                    <xsl:call-template name="string-trim">
                                        <xsl:with-param name="string" select="$curtoken" />
                                    </xsl:call-template>
                                </xsl:variable>
                                <!-- OR HERE -->
                                <div data-badge-type='medium-donut' class='altmetric-embed' data-badge-details='right' data-doi='{$newtext}'></div>
                            </xsl:if>
                        </xsl:for-each>
                    </xsl:if>
                </xsl:otherwise>
            </xsl:choose>
            <!-- End Code -->

         </div> <!-- end .file-wrapper clearfix-->
</xsl:template>

注意,当嵌入存在时,由于某种原因,<div class="file-list>也会封装包含URI和日期等的节点,但是当不存在嵌入时,它就不会这样做。

context参数是做什么的?我看到它从生成<div class="file-list">的模板中调用。实际上,我一点也不清楚这个模板里面发生了什么:

代码语言:javascript
复制
<div class="file-list">
            <xsl:choose>
                <xsl:when test="...">
                      ... 
                      <!-- what goes on here? -->
                </xsl:when>
                <xsl:otherwise>
                    <xsl:apply-templates select="mets:file">
                        <!-- what goes on here? -->
                        <xsl:with-param name="context" select="$context"/>
                    </xsl:apply-templates>
                </xsl:otherwise>
            </xsl:choose>
        </div>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-02 01:16:50

问题是空的div元素。一个已知的问题是,在旧的DSpace主题中,空的XHTML元素会破坏XHTML结构。您可以通过在div中添加一个不间断的空间来解决这个问题:

代码语言:javascript
复制
<div data-badge-type='medium-donut' class='altmetric-embed' data-badge-details='right' data-doi='{$doiVar}'>&#160;</div>

如果你在幻影代码中搜索,你会发现有相当多的事情发生。

这个问题在幻影2中得到了解决。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25611786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档