2014-09-19 119 views
0

在幻影主題的page-structure.xsl,我看到與match="dri:body"模板將調用</apply-templates><xsl:otherwise>情況。item-view.xsl中的模板如何調用?

這是如何最終導致模板item-view.xsl被稱爲/產生的? item-view.xsl中的大多數模板都與dim:名稱空間(即match="dim:...")中的元素匹配,這些元素來自mets.xml,而不是DRI xml。

我沒有看到匹配dri命名空間(即match="dri:..."),其中內item-view.xsl顯式調用模板,如匹配dim:dimmets:file模板任何的.xsl文件的任何模板。

回答

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頂部模板模板之一。

+0

'common.xsl'中'apply-templates'調用使用的'$ externalMetadata'是否由其他地方的'$ externalMetadata'變量構建?在'common.xsl'中,我看到'$ externalMetadata'變量只由' cocoon:/'構造。他們似乎沒有引用調用'mets.xml'文件。他們打開/打電話是什麼? – LazerSharks 2014-09-23 18:53:53

+1

'@ url'是'reference'元素的url屬性。例如:'url =「/ metadata/handle/10673/5/mets.xml」' – 2014-09-24 08:17:15

1

Mirage.xsl包括

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

該模塊包含以下代碼

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

在該模塊中,「破繭:」調用時將打開/metadata/handle/xxx/yyy/mets.xml。您可以在瀏覽器中打開此網址以查看正在處理的標記。

此處構造外部呼叫。

<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> 
+0

您是不是指'discovery.xsl'而不是'artifactbrowser.xsl'? – LazerSharks 2014-09-22 23:26:36

+0

這取決於上下文。使用$ externalMetadataURL的xslt代碼中的任何一點都可能觸發對mets.xml文件內容的處理。 – terrywb 2014-09-22 23:36:59

+0

你是對的。該引用位於discovery.xsl中。對困惑感到抱歉。如果你掃描所有的xsl文件,還有其他的cocoon:call的例子。 – terrywb 2014-09-23 18:39:47