Java XSLT为特定值列表应用模板

Java XSLT为特定值列表应用模板,java,transform,xslt,Java,Transform,Xslt,我是XSLT的初学者 我的源XML如下所示 <Options> <Option> <Data>Data1</Data> <Type>A</Type> </Option> <Option> <Data>Data2</Data> <Type>B</Type> &l

我是XSLT的初学者

我的源XML如下所示

<Options>
    <Option>
        <Data>Data1</Data>
        <Type>A</Type>
    </Option>
    <Option>
        <Data>Data2</Data>
        <Type>B</Type>
    </Option>
    <Option>
        <Data>Data3</Data>
        <Type>C</Type>
    </Option>
    <Option>
        <Data>Data4</Data>
        <Type>D</Type>
    </Option>
    ...
</Options>
<xsl:param name="filterType" select="'A,C'"/>

数据1
A.
数据2
B
数据3
C
数据4
D
...
我有一个参数,用于过滤上述方法的结果,如下所示

<Options>
    <Option>
        <Data>Data1</Data>
        <Type>A</Type>
    </Option>
    <Option>
        <Data>Data2</Data>
        <Type>B</Type>
    </Option>
    <Option>
        <Data>Data3</Data>
        <Type>C</Type>
    </Option>
    <Option>
        <Data>Data4</Data>
        <Type>D</Type>
    </Option>
    ...
</Options>
<xsl:param name="filterType" select="'A,C'"/>

输出应如下所示:

<Result>
     <Data Type="A">Data1<Data>
     <Data Type="C">Data3<Data>
</Result>

数据1
数据3
下面是我创建的XSLT:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">

    <xsl:param name="filterType" select="'A,C'"/>
    <xsl:template match="Options">
       <xsl:element name="Result">
         <xsl:apply-templates select="Option"/>
       </xsl:element>
    </xsl:template?

    <xsl:template match="Option">
       <xsl:element name="Data">
           <xsl:attribute name="Type">
               <xsl:value-of select="Type"/>
           </xsl:attribute>
           <xsl:value-of select="Data"/>
       </xsl:element>
    </xsl:template?
</xsl:stylesheet>


我想你只是想

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">

    <xsl:param name="filterType" select="'A,C'"/>

    <xsl:variable name="filter" select="concat(',', $filterType, ',')"/>

    <xsl:template match="Options">
       <Result>
         <xsl:apply-templates select="Option[contains($filter, concat(',', Type, ','))]"/>
       </Result>
    </xsl:template>

    <xsl:template match="Option">
       <Data Type="{Type}">
         <xsl:value-of select="Data"/>
       </Data>
    </xsl:template>

</xsl:stylesheet>