0

在 Mirage 主题中page-structure.xsl,我看到带有的模板match="dri:body"</apply-templates>在它的<xsl:otherwise>情况下调用。

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

dri我在任何与命名空间(即)匹配的 .xsl 文件中都看不到任何模板,这些文件在 .xlsmatch="dri:..."中显式调用模板item-view.xsl,例如模板匹配dim:dimmets:file.

4

2 回答 2

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>

这些参考集由.../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

于 2014-09-22T11:59:28.700 回答
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>
于 2014-09-19T23:14:49.237 回答