java - XSL 转换为枚举

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

我需要做什么?

最佳答案

不要在第四行中仅使用“SOLD_TO”,而是使用以下内容:

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

关于java - XSL 转换为枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19502360/

相关文章:

java - 使用 [java/lang/String] 进行混淆警告

Java-递归获取目录和子目录中的所有文件

java - 我使用什么 URL 在 Web 浏览器中打开 String 对象

java - 基于 EnumSet 在 GWT ValueListBox 中设置可接受值的列表?

java - 在 switch-case 语句中使用枚举的序数值

Java - 枚举 valueOf "override"命名约定

java - Playframework 2 - 部署到 ec2

html - XSLT 是否值得投入时间,是否有任何实际的替代方案?

java - 变压器从标签中删除了空格

xml - XST - 使用调用模板的输出作为返回值