我正在使用xslt从xml创建屏幕上的pdf,我需要隐藏外部参照,但只有当它出现在title元素中时才会显示。
例如:
<title><i>Naseem Akhtar v Birmingham City Council</i> [2011] EWCA Civ 383 <xref href="#Public_PUBLICLAW_PLLR_2011PLLR002">Click here for transcript</xref></title>
我想在这里展示
Naseem Akhtar v Birmingham City Council</i> [2011] EWCA Civ 383
“点击此处查看成绩单”值仍为常数
我在黑暗中尝试过以下野性刺伤:
<xsl:template match="title">
<xsl:if test="xref=href">
<fo:block
font-weight="bold"
text-transform="uppercase">
<xsl:apply-templates />
</fo:block>
</xsl:if>
</xsl:template>
以及
<xsl:template match="title">
<xsl:if test="*[contains(@class,' topic/xref ')][not(@href='')]">
<fo:block
font-weight="bold"
text-transform="uppercase">
<xsl:apply-templates />
</fo:block>
</xsl:if>
</xsl:template>
但是没有捕获外部参照。
请有人请我指出正确的方向。
感谢。
答案 0 :(得分:2)
这个简短而简单的转换(没有条件,只有一个模板):
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="title/xref"/>
</xsl:stylesheet>
应用于提供的XML文档:
<title>
<i>Naseem Akhtar v Birmingham City Council</i> [2011] EWCA Civ 383
<xref href="#Public_PUBLICLAW_PLLR_2011PLLR002">Click here for transcript</xref>
</title>
生成想要的正确结果:
Naseem Akhtar v Birmingham City Council [2011] EWCA Civ 383
<强>解释强>:
如果未指定模板,则XSLT处理器使用 built-in XSLT templates ,这样做的摘要结果是按文档顺序输出所有文本节点。
< / LI>我们通过覆盖匹配任何元素的内置模板来改变上述1.的效果 - 对于xref
的子元素的任何title
元素。覆盖模板具有空体,实际上“删除”了该元素的内容。