我是XSLT的新手,我很难理解一些代码。以下是我不理解的代码:
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
和:
<xsl:if test="*">
当你测试一个*符号时,它意味着什么?
第一个模板是标识转换的基础,通常用作"推送样式"样式表的基础,在该样式表中,默认行为是简单地将输入复制到输出中。添加了更具体的模板,以便自定义行为并生成不同的内容。
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
该模板将匹配任何属性@*
和任何节点(元素、注释、文本或处理指令(node()
,是*|comment()|text()|processing-instruction()
的缩写
当这些项中的任何一项匹配时,模板首先复制匹配的项,然后为上下文项的任何属性或node()
子项调用xsl:apply-templates
。在属性text()
、comment()
或processing-instruction()
的情况下,将不存在属性或子node()
。对于一个元素,它可以匹配其中任何一个。除非有更具体的模板,否则它将简单地与此模板匹配,并复制匹配的项并继续处理其属性和子项(如果有的话(。
在xsl:if
:的情况下
<xsl:if test="*">
它测试是否有任何子元素(相对于上下文节点(。如果存在,则满足条件,测试评估为true()
,并且将应用If中的任何内容。
有关缩写语法的更多信息,请参阅规范:https://www.w3.org/TR/xpath/#path-缩写