我有这个 xml 文档:
<tags>
<w lemme="déclaration" pos="NOM">Déclaration</w>
<w lemme="du" pos="PRP:det">des</w>
<w lemme="droit" pos="NOM">droits</w>
<w lemme="de" pos="PRP">de</w>
<w lemme="le" pos="DET:ART">l'</w>
<w lemme="homme" pos="NOM">homme</w>
<w lemme="et" pos="KON">et</w>
<w lemme="," pos="PUN">,</w>
...
</tags>
我正在尝试使用 xsl 过滤掉文章和标点符号。像这里 <w lemme=","pos="PUN" >,</w> 和 <w lemme="de" pos="PRP" >de</w> <w lemme="le" pos="DET :ART">l'</w>。因此,我制作了以下样式表,该样式表有效,但将我的所有条件推广到所有标签,包括标签 <标签>。
<xsl:template match="*">
<xsl:choose>
<xsl:when test="contains(@pos,'PUN')"></xsl:when>
<xsl:when test="contains(@pos,'PRP')"></xsl:when>
<xsl:when test="contains(@pos,'DET')"></xsl:when>
<xsl:otherwise>
<xsl:copy>
<xsl:attribute name="lemme">
<xsl:value-of select="@lemme"/>
</xsl:attribute>
<xsl:attribute name="pos">
<xsl:value-of select="@pos"/>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
我有这个结果:
<tags lemme="" pos="">
<w lemme="déclaration" pos="NOM">Déclaration</w>
<w lemme="droit" pos="NOM">droits</w>
<w lemme="homme" pos="NOM">homme</w>
<w lemme="et" pos="KON">et</w>
<w lemme="citoyen" pos="NOM">citoyen</w>
所以它可以工作并且只显示我感兴趣的行,只是我不希望它也在第一行的 < tags > 标签中添加 lemme="" pos="" 。我应该在 xsl 中进行什么更改以使其仅使用 < w > 标签。我尝试了 < xsl:template match="w" > 但它没有生成有效的 xml。请帮忙?