0

我希望我的输出 XML 具有不同的值。我做了一张桌子。

可以说有很多学生..

输入 XML

<?xml version="1.0" encoding="UTF-8"?>
<Person>
        <lookuptable>
          <name first="Jen" ori="Jenny" />
          <name first="Sam" ori="Sammy" />
        </lookuptable>
    <Student>
        <Info Name="Jen" Age="20" Class="C" />
    </Student>
    <Student>
        <Info Name="Sam" Age="21" Class="B" />

    </Student>

</Person>

所需输出

<?xml version="1.0" encoding="UTF-8"?>
<Person>
        <lookuptable>
          <name first="Jen" ori="Jenny" />
          <name first="Sam" ori="Sammy" />
        </lookuptable>
    <Student>
        <Info Name="Jenny" Age="20" Class="C" />
    </Student>
    <Student>
        <Info Name="Sammy" Age="21" Class="B" />

    </Student>

</Person>

我怎样才能Jenny,Sammy从查找表中获取等?意味着每个地方Jen都应该Jenny从表中使用。我不确定如何编写 XSL。

4

1 回答 1

1

定义一个键,使用身份转换模板和该属性的模板:

<xsl:key name="k1" match="lookuptable/name" use="@first"/>


<xsl:template match="@* | node()">
  <xsl:copy>
    <xsl:apply-templates select="@* , node()"/>
  </xsl:copy>
</xsl:template>


<xsl:template match="Student/Info/@Name">
  <xsl:attribute name="{name()}" select="key('k1', .)/@ori"/>
</xsl:template>
于 2013-10-07T11:05:27.987 回答