如何在XSL中读取Java列表对象

时间:2016-11-24 13:27:16

标签: java xml xslt

我有一个Java对象,它是ArrayList,我已经添加了它以响应服务,XML格式如下,

<root>
<SubRoot>
<type>A</type>
<mand>Y</mand>
<Section>B</Section>
</SubRoot>
<SubRoot>
<type>A</type>
<mand>Y</mand>
<Section>A</Section>
</SubRoot>
</root>

我正在尝试使用xml以上的某些值作为条件。在真实条件的基础上,我将为我的目的调用一些模板。

我正在调用我的xsl模板,如下所示

<xsl:choose>
       <xsl:when test="(/root/SubRoot[Section = 'A'])">
    //Call some template 
    </xsl:when>
    <xsl:otherwise>
    //some template
</xsl:otherwise>
</xsl:choose>

<xsl:choose>
    <xsl:when test="(/root/SubRoot[Section = 'B'])">
    //call some template
    </xsl:when>
<xsl:otherwise>
//some template
</xsl:otherwise>
</xsl:choose>

每次我的第一个when执行时,它都不会进入第二个when条件。

请问你能帮我解决两种情况的执行情况吗?在性能方面是否正确?

任何建议方法都必须受到赞赏。

1 个答案:

答案 0 :(得分:0)

试试这个,

XSL

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns1="http://locomotive/bypass/docx">
<xsl:output method="xml" version="1.0" encoding="UTF-8"
    indent="yes" />
<xsl:strip-space elements="*" />

<!-- identity transform -->
<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()" />
    </xsl:copy>
</xsl:template>

<xsl:template match="SubRoot">
    <xsl:choose>
        <xsl:when test="Section = 'A'">
            <!-- your logic for A -->
            <A></A>
        </xsl:when>
        <xsl:otherwise>
            <!-- your logic for B -->
            <B></B>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

XML

<root>
<SubRoot>
    <type>A</type>
    <mand>Y</mand>
    <Section>B</Section>
</SubRoot>
<SubRoot>
    <type>A</type>
    <mand>Y</mand>
    <Section>A</Section>
</SubRoot>

演示链接:http://xsltransform.net/ejivdHb/15