这似乎是一个非常基本的问题,但最近几天我一直在寻找答案并尝试无济于事。我试图把这个:
<bold> bang </bold>
<line> I was walking down the street </line>
<line> when I heard a <bold> bang </bold></line>
进入:
<strong> bang </strong>
<textline> I was walking down the street </textline>
<textline> when I heard a <strong> bang </strong></textline>
使用这个:
<xsl:template name="first" match="//line">
<textline>
<xsl:value-of select="."/>
</textline>
</xsl:template>
<xsl:template name="second" match="//bold">
<strong>
<xsl:value-of select="."/>
</strong>
</xsl:template>
<xsl:template match="@*|node()|line|bold">
<xsl:copy>
<xsl:apply-templates select="@*|node()|line|bold"
/>
</xsl:copy>
</xsl:template>
我的问题是它要么命中<bold>
OR<line>
标签,但不是两者兼而有之。例如:
<strong> bang </strong>
<textline> I was walking down the street </textline>
<textline> when I heard a bang </textline>
如果<bold>
标签总是在里面<line>
,或者从不在里面,那将是直截了当的。
我尝试添加一个我认为会优先考虑的更具体的模板:
<xsl:template name="third" match="//l/bold">
<strong>
<xsl:value-of select="."/>
</strong>
</xsl:template>
但它仍然没有给出预期的结果。我强烈怀疑我的错误是由于对该语言的基本知识有误解,但是四处搜索我找不到任何解决方案任何帮助将不胜感激。