这是一个重新工作/新问题,因为我通过询问错误元素得到了我之前的错误,所以这里...
我正在尝试使用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之后处理,并且我的所有匹配都被后面的模板匹配覆盖。
答案 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