2

给定这样的 XML:

<a id="1">
  <b>
    <code>42</code>
  </b>
</a>

目标是:

<request>
  <aId>1</aId>
  <bCode>42</bCode>
</request>

我可以使用这个 XSLT 来实现:

<template match="/">
  <element name="request">
    <apply-templates/>
  </element>
</template>

<template match="a">
  <element name="aId"><value-of select="@id"/></element>
  <apply-templates/>
</template>

<template match="b/code">
  <element name="bCode"><value-of select="."/></element>
</template>

但是,如果我<apply-templates/><next-match/>. 有什么建议可以在什么时候使用,什么时候它们似乎都可以正常工作?例如,如果我稍后添加更多内容,是否next-match有其他效果可能会搞砸?

4

1 回答 1

1

那么在这种情况下,您的使用next-match依赖于内置元素模板apply-templates(参见http://www.w3.org/TR/xslt20/#built-in-rule)。一旦您为元素添加了模板,例如

<xsl:template match="*">
  <xsl:copy>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>

next-match不再使用内置模板,它什么都不做apply-templates,只会选择上面添加结果节点的模板。

因此,对于您的代码,我将继续使用apply-templates.

于 2012-10-26T12:48:05.863 回答