我是 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,但未设置枚举值。
我需要做什么?