0

我有一个奇怪的情况:

XML

...
<item>
    <p><a href="image-01">image X</a>text...</p>
    <p>text...<a href="image-02">image Y</a></p>
    <p>some...<a href="image-02">image y2</a></p>
    <img id="image-02" />
</item>
...

我必须找到具有相同属性@href(如果存在)的标签,并在第一个标签上添加一个额外的属性(如 class="xyz") 可能吗?
谢谢你
的语法

4

1 回答 1

1

您可以使用

<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:key name="by-href" match="*[@href]" use="@href"/>

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

<xsl:template match="*[@href][. is key('by-href', @href)[1]]">
  <xsl:copy>
    <xsl:apply-templates select="@*"/>
    <xsl:attribute name="class" select="'xyz'"/>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>

</xsl:stylesheet>

XSLT 2.0 处理器,如 Saxon 9 或 AltovaXML 或 XmlPrime。

于 2013-08-30T16:21:06.427 回答