我是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,但枚举值没有设置。
我需要做什么?
答案 0 :(得分:2)
而不只是第4行中的“SOLD_TO”使用以下内容:
<xsl:value-of select="string('SOLD_TO')"/>