繁体   English   中英

apply-templates select =“ @ * | node()

[英]apply-templates select="@*|node()

我对xslt非常陌生。 请帮助我了解xslt下面的流程对于给定的xml如何工作

输出将与输入相同还是输出仅包含属性。

<xsl:template match="/">

<Request>   
    <xsl:apply-templates select="Envelope/body/*" /> 
</Request>           
</xsl:template>

<xsl:template match="*">
    <xsl:element name="{local-name()}">
        <xsl:apply-templates select="@*|node()"/>
    </xsl:element>
</xsl:template>

<xsl:template match="@*">
    <xsl:attribute name="{local-name()}">
        <xsl:value-of select="."/>
    </xsl:attribute>
</xsl:template>

谢谢

流程如下:

  • 根节点(也称为文档)被匹配,并输出<Request>元素。
  • 然后,继续使用“ Envelope/body下的元素( * )。
  • 其余两个模板与任何元素( * )或属性( @* )匹配,并输出相同的模板,但不包括组件名称的名称空间部分。
    • 对于元素,此处理以递归方式继续( <xsl:apply-templates select="@*|node()"/> ),直到没有子级为止。
    • 对于属性,将输出值,并且处理将达到最低。

实际上,该脚本旨在输出封装在<Request>元素中而没有名称空间的信封正文内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM