XSLT:将多个不相关的元素组合成一个元素

时间:2016-11-09 22:05:49

标签: xml xslt dublin-core

我正在将合格的都柏林核心转变为MODS。我需要将两个元素合并为一个,我在这里找到的其他帖子不适用,因为它们匹配父元素。

Dublin Core在XSLT中存在问题,因为它没有父元素和子元素......所以我不确定选择哪个。

这是一些示例输入(重要位是dc:coverage元素):

<?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>

这是dc:coverage元素所需的输出:

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

我已经阅读过可以处理具有相同名称的不同元素的解决方案,但没有任何可以将两个元素组合在一起的名称不同。我已经尝试将这些设置为变量,但无法确定如何将变量从一个模板(例如匹配dc:coverage.spatial.lat)传递到下一个(匹配dc:coverage.spatial.long)。所以我有点盲目。

非常感谢任何建议(或指向我找不到的适用答案的链接)。

1 个答案:

答案 0 :(得分: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>