首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理目标元素类型列表?

如何处理目标元素类型列表?
EN

Stack Overflow用户
提问于 2016-09-14 06:15:32
回答 1查看 44关注 0票数 1

我需要处理特定元素类型的模板。

我想提供的不是一个元素类型,而是作为参数的元素类型列表。例如。

代码语言:javascript
复制
<xsl:param name="element_type" select="'hdd;dvd-rom'"/>

我需要如何处理这些输入?

下一个是设计模板(只处理一个元素类型)。

代码语言:javascript
复制
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                exclude-result-prefixes="xs"
                version="2.0">

    <xsl:param name="element_type" select="'hdd'"/>
    <xsl:param name="old_value" select="'2016'"/>
    <xsl:param name="new_value" select="'xxxx'"/>


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

    <xsl:template match="*[local-name() eq $element_type]/@name[contains(., $old_value)]">
        <xsl:attribute name="{name()}" select="replace(., $old_value, $new_value)"/>
    </xsl:template>

</xsl:stylesheet>

下面是示例XML。

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<desktop>
    <hdd name="2016-1"/>
    <dvd-rom name="2016-2"/>
    <cd-rom name="2016-3"/>
</desktop>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-14 07:21:39

如果您想要一个序列(XSLT/XPath中没有列表),那么使用select="'hdd', 'dvd-rom'",然后使用local-name() = $element_type

根据设置参数的方式,可能更容易传递带有逗号、分号或类似分隔符的字符串,就像在<xsl:param name="element_type" select="'hdd;dvd-rom'"/>中那样,然后使用<xsl:variable name="element_types" select="tokenize($element_type, ';')"/>获得序列,在比较中最终可以使用local-name() = $element_types

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39483622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档