我想帮助使用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>
我希望我的问题很明确。
答案 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"/>