我有一个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成约束.
<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>
我找到了一些关于做两次通过的答案,但我不确定这是否是正确的答案,也不知道如何实现我找到的答案.我应该如何处理这个问题,如果有一个简单的答案,它是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。