2

xslを使用して1つの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>

私の質問が明確であることを願っています。

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 に答える