使用XSLT从另一个xml文件获取XML节点描述

时间:2012-06-10 08:08:39

标签: xml xslt

我想帮助使用xsl从一个xml到另一个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>

我希望我的问题很明确。

1 个答案:

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