XSLT 2.0使用标识转换过滤属性

时间:2015-07-21 02:10:30

标签: xslt

我正在使用XSLT 2.0从XHTML文件中提取数据。我想摆脱href以外的所有属性。此版本的标识转换将删除所有属性。请注意,它不会复制任何属性,因为未使用@*

<xsl:template match="node()">
  <xsl:copy>
     <xsl:apply-templates select="node()"/>
  </xsl:copy>
</xsl:template>

我尝试使用@*并过滤href,但它不起作用。

<xsl:template match="node()|@*[href]">
  <xsl:copy>
     <xsl:apply-templates select="node()|@*"/>
  </xsl:copy>
</xsl:template>

我收到了消息The child axis starting at an attribute node will never select anything.我也尝试过使用@*[@href]@*[href=@*]之类的其他结构,并收到相同的消息。我使用的是Saxon HE 9.5.1.4。

我是否可以使用身份转换选择性地仅复制特定属性(及其值),还是必须以其他方式执行此操作?

1 个答案:

答案 0 :(得分:2)

尝试:

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