有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我是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'"/>

输出应如下所示:

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

下面是我创建的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>

在为'Option'标记应用模板时,我需要使用filterType。 我该怎么做?请帮忙


共 (1) 个答案

  1. # 1 楼答案

    我想你只是想

    <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>