如何使用属性值改变xsl模板?

时间:2017-03-01 11:32:49

标签: xml xslt

我需要使用XSL使用属性值来改变我的相同元素:

我的输入xml是:

<span class="Option">
<span class="AnswerText">Female</span>
</span>

我使用的XSL:

   <xsl:template match="span">
      <p><xsl:apply-templates/></p>
   </xsl:template>

输出我得到:

<p><p>Female</p></p>

但我希望输出如下:

<p><ph>Female</ph></p>

我需要使用属性值来改变两个span元素。请建议我代码。提前致谢

2 个答案:

答案 0 :(得分:0)

您可以使用:

<xsl:template match="span[@class='Option']">
    <p>
        <xsl:apply-templates/>
    </p>
</xsl:template>

<xsl:template match="span[@class='AnswerText']">
    <ph>
        <xsl:apply-templates/>
    </ph>
</xsl:template>

答案 1 :(得分:0)

您可以使用axis来检查span是否具有父标记span,然后相应地应用模板

<xsl:template match="span">
        <xsl:choose>
            <xsl:when test="parent::span">
                <ph>
                    <xsl:apply-templates/>
                </ph>
            </xsl:when>
            <xsl:otherwise>
                <p>
                    <xsl:apply-templates/>
                </p>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>

输出:

<p>
    <ph>Female</ph>
</p>