2

我需要使用 xsl 将值从一个 xml 获取到另一个的帮助,我有以下 xml:

<metadata>
  <idinfo>Node Text</idinfo>
</metadata>

我有一个通用的 xsl 来显示如下节点:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns:dmd="http://www.digitalmeasures.com/schema/data-metadata"
  xmlns:dm="http://www.digitalmeasures.com/schema/data">
    <xsl:output method="html" encoding="utf-8"/>
    <xsl:template match="*[(child::*)]">
        <fieldset>
            <legend><xsl:value-of select="local-name()"/></legend>
            <xsl:apply-templates/>
        </fieldset>
    </xsl:template>
    <xsl:template match="*[not(child::*)]">
        <strong><xsl:value-of select="local-name()"/></strong>
            <i><xsl:apply-templates/></i>
    </xsl:template>
</xsl:stylesheet>

输出将是:

<fieldset>
<legend>metadata</legend>
  <strong>idinfo</strong><i>Node Text</i>
</fieldset>

现在我想要的是用另一个 xml 替换节点名称,所以我想用标识信息替换 idinfo

我要使用的 xml 如下:

<?xml version="1.0" encoding="UTF-8"?>
<labels>
<element name="idinfo">
<label>Identification Information</label>
</element>
</label>

我希望我的问题很清楚。

4

1 回答 1

2

首先,设置您的参考表,如:

<xsl:variable name="labels_info" select="document('another.xml')/labels"/>

然后像这样使用它:

<xsl:value-of select="$labels_info/element[@name=local-name(current())]/label"/>

万一它不起作用(我听说过这方面的报告),请使用一个变量:

<xsl:variable name="current_name" select="local-name"/> 
<xsl:value-of select="$labels_info/element[@name=$current_name]/label"/>
于 2012-06-10T09:30:59.907 回答