XSLT "match"和"if"含义



我是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-缩写

最新更新