0

我是 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,但未设置枚举值。

我需要做什么?

4

1 回答 1

2

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

<xsl:value-of select="string('SOLD_TO')"/>
于 2013-10-21T23:52:37.670 回答