模板与以下 XPATH 平均值匹配



谁能告诉我以下模板匹配的含义

<xsl:template match="*[not(*)]">

<xsl:template match="*(*)">

我猜的是,第一个模板匹配将应用于所有没有任何子元素的元素节点

第二个匹配适用于具有子元素的元素谢谢

*用于

匹配任何元素。如果有方括号,则表示要对该元素进行检查的条件。在这种情况下,not(*)检查是否没有子元素。

因此,<xsl:template match="*[not(*)]">将匹配没有子元素的元素。因此,它将匹配此(因为Bob是一个文本节点,而不是一个元素)

<Name>Bob</Name>

这(因为type是一个属性,而不是一个元素)。

<Name type="A" />

但它与此不匹配(因为Name具有子元素FirstName

<Name><FirstName>Bob</FirstName></Name>

<xsl:template match="*(*)">的第二种模式实际上不是有效的语法。

如果您尝试匹配确实具有子元素的元素,则可以执行以下操作:

<xsl:template match="*[*]">
<xsl:template match="*[not(*)]">

它表示下面没有任何元素的元素。

<xsl:template match="*(*)">

这在语法上似乎是错误的。因为你应该在那里使用[]。然后这意味着选择任何在其下有元素的元素。

这里的元素是一个标记<tag>而不是文本节点或属性。希望它能回答。

相关内容

  • 没有找到相关文章