gpt4 book ai didi

java - XSLT 应用特定值列表的模板

转载 作者:行者123 更新时间:2023-11-30 04:37:45 26 4
gpt4 key购买 nike

我是 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。我怎样才能做到这一点?请帮忙。

最佳答案

我想你只是想要

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

关于java - XSLT 应用特定值列表的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13047654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com