2013-10-07 2 views
0

Я хочу, чтобы мой выходной XML имел разные значения. У меня есть таблица.Измените выходные значения XML с помощью XSL

позволяет сказать, что есть много студентов ..

ввод 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 и т.д. от LookupTable ?? что означает каждое место Jen, он должен использовать Jenny из таблицы. Я не уверен, как писать XSL.

ответ

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> 
+0

Это не должен быть ' '? –

+0

@markdark, с XSLT 2.0 вы можете написать '' и ''. Поскольку вопрос помечен как «xslt-2.0», я использовал функции этой языковой версии. –

+0

, если я хочу изменить возрастное значение (например: -twenty) (скажем, есть другая строка для поиска с соответствующими значениями). Like above name, как добавить его в xsl – Hash

Смежные вопросы