item-view.xsl中模板的调用方式和位置在哪里?

时间:2014-09-19 22:29:45

标签: dspace

在Mirage主题page-structure.xsl中,我看到包含match="dri:body"的模板会在其</apply-templates>案例中调用<xsl:otherwise>

这最终如何导致item-view.xsl中的模板被调用/生成? item-view.xsl中的大多数模板都匹配dim:命名空间中的元素(即match="dim:..."),这些元素来自mets.xml,而不是DRI xml。

我没有看到与dri命名空间(即match="dri:...")匹配的任何.xsl文件中的任何模板,这些模板显式调用item-view.xsl中的模板,例如模板匹配{ {1}}或dim:dim

2 个答案:

答案 0 :(得分:3)

查看项目页面的DRI: http://demo.dspace.org/xmlui/DRI/handle/10673/5

您会发现对mets.xml的引用是在referenceSet元素中进行的:

<referenceSet id="aspect.artifactbrowser.ItemViewer.referenceSet.collection-viewer" n="collection-viewer" type="summaryView">
    <reference repositoryID="10673" type="DSpace Item" url="/metadata/handle/10673/5/mets.xml">
        <referenceSet rend="hierarchy" type="detailList">
            <head>This item appears in the following Collection(s)</head>
            <reference repositoryID="10673" type="DSpace Collection" url="/metadata/handle/10673/2/mets.xml"/>
        </referenceSet>
    </reference>
</referenceSet>

这些referenceSets与.../aspect/artifactbrowser/common.xsl文件中的模板匹配。

如果是“summaryView”,则会发生以下情况:

<xsl:apply-templates select="document($externalMetadataURL)" mode="summaryView"/>

将匹配(仍然在common.xsl中)

<xsl:template match="mets:METS[mets:dmdSec/mets:mdWrap[@OTHERMDTYPE='DIM']]" mode="summaryView">

反过来会调用

<xsl:call-template name="itemSummaryView-DIM"/>

item-view.xsl中的顶级模板模板之一。

答案 1 :(得分:1)

Mirage.xsl包含

<xsl:import href="../dri2xhtml-alt/dri2xhtml.xsl"/>

该模块包含以下代码

<xsl:import href="aspect/artifactbrowser/artifactbrowser.xsl"/>

在该模块中,进行“cocoon:”调用,打开/metadata/handle/xxx/yyy/mets.xml。您可以在浏览器中打开此URL以查看正在处理的标记。

此处构建外部呼叫。

<xsl:variable name="externalMetadataURL">
    <xsl:text>cocoon://metadata/handle/</xsl:text>
    <xsl:value-of select="$handle"/>
    <xsl:text>/mets.xml</xsl:text>
    <!-- Since this is a summary only grab the descriptive metadata, and the thumbnails -->
    <xsl:text>?sections=dmdSec,fileSec&amp;fileGrpTypes=THUMBNAIL</xsl:text>
    <!-- An example of requesting a specific metadata standard (MODS and QDC crosswalks only work for items)->
    <xsl:if test="@type='DSpace Item'">
        <xsl:text>&amp;dmdTypes=DC</xsl:text>
    </xsl:if>-->
</xsl:variable>