Что мы понимаем под этим обозначением 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>

Если я применил это так, он пропускает <status> node в моем xml, howz это происходит

Ответ 1

/|@*|node() представляет собой шаблон соответствия состоящий из трех отдельных шаблонов. / соответствует корню node, также называемому документом node, @* соответствует любому атрибуту node и node() как шаблон "соответствует любому node, отличному от атрибута node, а корень node" . Поэтому для любого типа node (поскольку эти три шаблона описывают все типы узлов), шаблон говорит <xsl:apply-templates select="@*|node()"/>, что означает процесс объединения узлов атрибута и дочерних узлов. Узлы документов, согласованные с /, не имеют узлов атрибутов, а атрибуты их не имеют, а как компактный способ, который вы часто видите в шаблонах.

Однако есть встроенный шаблон для узлов документа, который делает <xsl:template match="/"><xsl:apply-templates/></xsl:template>, поэтому обычно люди пропускают / в шаблоне.