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> 我找到了一些关于做两次通过的答案,但我不确定这是否是正确的答案,也不知道如何实现我找到的答案.我应该如何处理这个问题,如果有一个简单的答案,它是什么? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |