Как проверить шаблон в xslt, а затем скрыть вывод? - PullRequest
1 голос
/ 24 октября 2011

Я использую xslt для создания экранных PDF-файлов из 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</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> 

но ни поймать внешнюю ссылку.

Может ли кто-нибудь, пожалуйста, указать мне в правильном направлении, пожалуйста.

Спасибо.

1 Ответ

2 голосов
/ 24 октября 2011

Это короткое и простое преобразование (без условий для al и только один шаблон):

<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 

Объяснение

  1. Если шаблоны не указаны, процессор XSLT использует встроенные шаблоны XSLT , и суммарным результатом этого является вывод всех текстовых узлов в порядке документа.

  2. Мы изменяем эффект 1. выше, переопределяя встроенный шаблон, который соответствует любому элементу - для любого элемента xref, который является дочерним для title. Шаблон переопределения имеет пустое тело, которое фактически «удаляет» содержимое этого элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...