web-dev-qa-db-ja.com

このxsl表記の意味<xsl:template match = "/ | @ * | node()">

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

<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>

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

12
Ironman

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

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

18
Martin Honnen