XSL转换为枚举

时间:2013-10-21 18:52:02

标签: java xslt enums

我是XSL的新手,在将一个异常值转换为JAXB注释类中的已知枚举方面有点挣扎。我有一个枚举定义为:

@XmlType( name = "accountGroup" )
@XmlEnum
public enum AccountGroup
{
    SOLD_TO, SHIP_TO, BILL_TO;

    public static AccountGroup fromValue( String v )
    {
        return valueOf( v );
    }

    public String value()
    {
        return name();
    }
}

此枚举的一个实例在我的目标类中作为accountGroup。

当其中一个枚举值在源XML中时,一切都很好。例如,一个系统传入:

<acctType>SOLD_TO</acctType>  

此输入的XSL只接受此操作并将其转换为java类所期望的XML,并在枚举中设置该值。

<xsl:element name="accountGroup"><xsl:value-of select="acctType"/></xsl:element>

但是,一个系统传递的是我需要转换的不同值,因此我为这些输入使用了不同的XSL模板。源值类似于:

<rn4:displayValue>Z001, Sold-to party</rn4:displayValue>

我正在尝试用以下内容转换它:

<xsl:element name="accountGroup">
  <xsl:choose>
    <xsl:when test="substring-before(rn4:matched/rn4:kTOKD/rn4:displayValue,',')='Z001'">
      SOLD_TO
    </xsl:when>
  </xsl:choose>
</xsl:element>

我已经测试过子串解析为Z001,但枚举值没有设置。

我需要做什么?

1 个答案:

答案 0 :(得分:2)

而不只是第4行中的“SOLD_TO”使用以下内容:

<xsl:value-of select="string('SOLD_TO')"/>