这个XSLT片段有什么作用?

时间:2013-10-29 10:27:39

标签: xml xslt

有谁能告诉我,XSLT在这做什么?它是更长的XSLT文档的一部分。

<xsl:template match="node[child::attribute[@NAME='entity']]">
<xsl:choose>
    <xsl:when test="child::attribute[@NAME='entity']/@VALUE='accessval'">
        <xsl:element name="access">
            <xsl:apply-templates />
        </xsl:element>
    </xsl:when>
    <xsl:when test="child::attribute[@NAME='entity']/@VALUE='aclval'">
        <xsl:element name="acl">
            <xsl:apply-templates />
        </xsl:element>
    </xsl:when>
    </xsl:choose>
</template>

谢谢!

1 个答案:

答案 0 :(得分:1)

它会匹配node元素子attributeNAME="entity"元素的VALUE元素,并且基于该attribute元素的node属性将access重命名为acl<node> <attribute NAME="entity" VALUE="accessval"/> <!-- other elements here --> </node> ,然后继续处理其子级,即:

<access>
  <!-- result of applying templates to "attribute" and "other elements here" -->
</access>

它会产生

VALUE

如果acl是&#34; aclval&#34;它会生成一个名为access而不是<attribute NAME="entity" VALUE="something" />的元素。

如果node中有多个xsl:when,那么xsl:choose内的第一个匹配<node> <attribute NAME="entity" VALUE="aclval"/> <attribute NAME="entity" VALUE="accessval"/> <!-- other elements here --> </node> 就会获胜,即给定< / p>

access

结果元素为acl,而不是{{1}},因为它会检查&#34; accessval&#34;之前&#34; aclval&#34;。