2016-11-09 71 views
0

我正在將合格的都柏林核心轉換爲MODS。我需要將兩個元素合併爲一個,我在這裏找到的其他帖子不適用,因爲它們匹配父元素。XSLT:將多個無關元素合併爲一個元素

都柏林核心與XSLT有問題,因爲它沒有父元素和子元素......所以我不確定選擇哪一個。

下面是一些示例輸入(重要位是DC:覆蓋元素):

<?xml version="1.0"?> 
    <oai_dc:dc (schema etc.)> 
     <dc:title>This is the title</dc:title> 
     <dc:creator>Author McAuthorson</dc:creator> 
     <dc:type>Article</dc:type> 
     <dc:coverage.spatial.lat>49.101</dc:coverage.spatial.lat> 
     <dc:coverage.spatial.long>-122.720</dc:coverage.spatial.long> 
    </oai_dc:dc> 

這裏是我需要的直流輸出:覆蓋範圍元素:

<subject> 
    <cartographics> 
    <coordinates>49.101, -122.720</coordinates> 
    </cartographics> 
</subject> 

我已經閱讀可以處理具有相同名稱的不同元素的解決方案,但不能將具有不同名稱的兩個元素組合在一起。我已經嘗試將這些設置爲變量,但無法解決如何將變量從一個模板(例如,將dc:coverage.spatial.lat匹配)轉換爲下一個(與dc:coverage.spatial.long匹配)的問題。所以我有點盲目。

任何意見(或無法找到適用答案的鏈接)將不勝感激。

+0

可以有相同的父下的多個經/緯度對('oai_dc:dc'在你的例子)? –

+0

否 - 每條記錄只有一組緯度/長度對。 – Brandon

+0

我會質疑你的教學XSLT的策略。你不能通過在網上搜索你想要的東西來學習編程語言。您需要了解這些原則並掌握構建模塊,以便您可以將它們結合起來爲您的特定問題創建自己的解決方案。如果您無法弄清楚如何將變量從一個模板傳遞到另一個模板,那麼您無法從正確的位置獲取信息。給自己一本好的XSLT書,並閱讀它。 –

回答

0

你爲什麼不能做簡單:

<xsl:template match="/oai_dc:dc"> 
    <subject> 
     <cartographics> 
      <coordinates> 
       <xsl:value-of select="dc:coverage.spatial.lat" /> 
       <xsl:text>, </xsl:text> 
       <xsl:value-of select="dc:coverage.spatial.long" /> 
      </coordinates> 
     </cartographics> 
    </subject> 
</xsl:template> 
+0

michael.hor257k:給了一個嘗試...不起作用,因爲這只是一個更大的XSLT(比我的例子中有更多的元素)的一小塊。該解決方案產生忽略所有其他元素/變換的輸出。 – Brandon

+0

@Brandon您需要添加代碼以處理要包含在輸出中的其他節點。不幸的是,我無法知道這些可能是什麼以及它們需要如何處理。請查看:[mcve]。 –