12

これが何を意味するのかわかりません。

<xsl:template match="/|@*|node()">
<xsl:apply-templates match="@*|node()"/>
</xsl:template>

私を助けてください..

    <xsl:template match="local-name()='status'"/> 
<xsl:template match="/|@*|node()"> 
<xsl:copy> 
<xsl:apply-templates match="@*|node()"/> 
<xsl:copy> 
</xsl:template>

このように適用すると <status>、xmlのノードが省略されます。

4

1 に答える 1

19

/|@*|node()3つのシングルパターンで構成されたマッチパターンです。/ドキュメント ノードとも呼ばれるルート ノードに@*一致し、任意の属性ノードに一致node()し、パターンとして「属性ノードとルート ノード以外の任意のノードに一致」します。したがって、どの種類のノードに対しても (これらの 3 つのパターンはすべての種類のノードを表すため)、テンプレートは<xsl:apply-templates select="@*|node()"/>、属性ノードと子ノードの結合を処理することを意味します。一致するドキュメント ノードに/は属性ノードがなく、属性にも属性ノードはありませんが、コンパクトな方法として、そのようなテンプレートをよく見かけます。

ただし、ドキュメント ノード用の組み込みテンプレートがあり<xsl:template match="/"><xsl:apply-templates/></xsl:template>、通常はパターンで を省略し/ます。

于 2012-11-16T18:17:05.720 に答える