加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml – xslt:如何在处理期间将两个模板应用于同一节点?

发布时间:2020-12-16 23:19:37 所属栏目:百科 来源:网络整理
导读:我有一个XSL模板,匹配任何元素与 var儿童: xsl:template match="*[var]" xsl:copy xsl:attribute name="editable" xsl:for-each select="var[@attr]" xsl:value-of select="concat(@attr,substring(' ',1 div (position()!=last())))"/ /xsl:for-each /xsl:
我有一个XSL模板,匹配任何元素与< var>儿童:

<xsl:template match="*[var]">
    <xsl:copy >
        <xsl:attribute name="editable">
            <xsl:for-each select="var[@attr]">
                <xsl:value-of
                              select="concat(@attr,substring(' ',1 div (position()!=last())))"/>
            </xsl:for-each>
        </xsl:attribute>
        <xsl:attribute name="constraints">
            <xsl:for-each select="var[@ok]">
                <xsl:value-of
                              select="concat(@attr,':',@ok,substring(';',1 div (position()!=last())))"/>
            </xsl:for-each>
        </xsl:attribute>
        <!-- if this is an <a> then we have to put the stuff inside it inside it -->
        <xsl:apply-templates select="@*" />
        <xsl:apply-templates />
    </xsl:copy>
</xsl:template>

它将var元素的attrs连接到父元素的editable属性中;和oks成约束.

然后我有一个匹配任何< field>的模板元件:

<xsl:template match="field">
     <span>
        <xsl:attribute name="field">
            <xsl:choose>
                <xsl:when test="boolean(@name)">
                   <xsl:value-of select="./@name"/>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:text>true</xsl:text>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:attribute>
        <xsl:apply-templates />
    </span>
</xsl:template>

这只是将其转换为< span field =“name”>如果字段有一个,则名称与字段相同,否则为“true”.

我遇到的问题是,* [var]匹配一个字段,如果该字段有< var>作为一个孩子.但我想要发生的是* [var]首先匹配,然后匹配的字段,但之后.

目前,有一个输入

<field name="field1">
    <var attr="class" ok="small,smaller" />
    Text
</field>

我明白了

<field name="field1" editable="class" constraints="class:small,smaller">
    Text
</field>

但我想要

<span field="field1" editable="class" constraints="class:small,smaller">
    Text
</span>

我找到了一些关于做两次通过的答案,但我不确定这是否是正确的答案,也不知道如何实现我找到的答案.我应该如何处理这个问题,如果有一个简单的答案,它是什么?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读