XSLT 2.0如果条件

时间:2015-04-14 17:01:58

标签: xml xslt xslt-2.0

需要有关XSLT 2.0转换的帮助。

输入xml:

<Employee>
<Post>Manager</Post>
</Employee>

伪代码:

if(Employee/Post = 'Manager') then
Associate/High = 'Band'
else
Associate/Low = 'Band'

输出xml:

<Associate>
<High>Band</High>
</Associate>

<Associate>
<Low>Band</Low>
</Associate>

2 个答案:

答案 0 :(得分:1)

使用xsl:element动态构造元素。除此之外,您的伪代码已经非常准确。

XSLT样式表

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="xml" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />

    <xsl:template match="Employee">
      <Associate>
          <xsl:element name="{if (Post = 'Manager') then 'High' else 'Low'}">
              <xsl:value-of select="'Band'"/>
          </xsl:element>
      </Associate>
    </xsl:template>

</xsl:transform>

XML输出

<Associate>
   <High>Band</High>
</Associate>

答案 1 :(得分:0)

我会使用模板

<xsl:template match="Employee">
  <Associate>
    <xsl:apply-templates/>
  </Associate>
</xsl:template>

然后

<xsl:template match="Employee/Post[. = 'Manager']">
  <High>Band</High>
</xsl:template>

<xsl:template match="Employee/Post[not(. = 'Manager')]">
  <Low>Band</Low>
</xsl:template>