仅当外部参照出现在具有特定属性的p元素中时才需要隐藏外部参照

时间:2011-10-24 14:13:33

标签: xslt

这是一个重新工作/新问题,因为我通过询问错误元素得到了我之前的错误,所以这里...

我正在尝试使用LC LRCaseName的属性匹配并隐藏以下p元素中的外部参照:

<p outputclass="LC LRCaseName"><i>Naseem Akhtar v Birmingham City Council</i> [2011] EWCA Civ 383 <xref href="#Public_PUBLICLAW_PLLR_2011PLLR002">Click here for transcript</xref></p>

所以我最终得到了“ Naseem Akhtar诉伯明翰市议会[2011] EWCA Civ 383

我们需要显示其他p输出类中的其他外部参照,否则我会根据Dimitre Novatchev的建议用&lt; xsl:template match="p/xref"/>隐藏它。

此特定外部参照将始终包含“点击此处查看成绩单”,但href会有所不同。

感谢。

修改

我尝试了以下代码,它不会使外部参照背景变为红色:

<xsl:template match="p[@outputclass='LC LRCaseName']/xref">
    <fo:block background-color="red" >
        <xsl:apply-templates/>
    </fo:block>
</xsl:template> 

但如果我使用它:

<xsl:template match="p[@outputclass='LC LRCaseName']">
    <fo:block background-color="red" >
        <xsl:apply-templates/>
    </fo:block>
</xsl:template> 

它确实使整个P元素背景变为红色,并包含外部参照部分。

编辑2:

我刚想到,这个系统有另一个xref文件,它与xref匹配。我想知道我的更改是否被此文件覆盖了。让我进一步研究这个问题。

编辑3:

刚刚放置了相同的代码

<xsl:template match="p[@outputclass='LC LRCaseName']/xref" />

到dita2fo-links.xsl而不是我正在处理的当前文件(dita2fo-elems.xsl),它立刻就可以了。显然,链接文件在elems之后处理,并且我的所有匹配都被后面的模板匹配覆盖。

2 个答案:

答案 0 :(得分:1)

此转换生成所需的输出

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="p[@outputclass='LC LRCaseName']/xref"/>
</xsl:stylesheet>

答案 1 :(得分:1)

xref 元素的匹配选择器也可以包含属性值,如下所示:

p[@outputclass = 'LC LRCaseName']/xref