xsl: if - если элемент присутствует - PullRequest
3 голосов
/ 19 января 2012

Мне нужно написать в мой xslt предложение, которое говорит, что если элемент присутствует, отображать текстовый узел, а если его нет, ничего не отображать Я могу найти, как написать, если текстовый узел является конкретным словом, но не, если элемент присутствует.

Любой совет очень ценится.

PS: новичок в xslt / xml и т. Д.

Например: XML представляет книгу, содержащую страницы. Одна версия страницы имеет заголовок. Под ним таблица с четырьмя столбцами и 20 строками. Под это нижний колонтитул. Этот нижний колонтитул не на другой версии страницы. Мой xslt должен преобразовать xml в веб-страницу, представляющую это визуально.

xml поэтому имеет элемент <Footer>, который имеет minOccurs 0 в схеме.

1 Ответ

4 голосов
/ 20 января 2012

Это можно сделать, пропустив сравнение, например:

<xsl:if test='root/element'>

Однако, в конечном счете, более чистый способ получить то, что вам нужно, - это использовать xsl: templates

Так что для xml

<?xml version="1.0" encoding="utf-8"?>
<root>
  <page>
    <title>Franks</title>
    <header>header text</header>
    <bodytext>here is the body text</bodytext>
  </page>
  <page>
    <title>Joes</title>
    <footer>footer text</footer>
    <bodytext>here is the body text2</bodytext>
  </page>
</root>

XSL

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="/">

      <xsl:apply-templates select="page"></xsl:apply-templates>
    </xsl:template>

  <xsl:template match="page">
    <h1>
      <xsl:value-of select="title"/>
    </h1>
    <p>
      <xsl:value-of select="bodytext"/>
    </p>
    <xsl:apply-templates select="footer"/>
  </xsl:template>

  <xsl:template match="footer">
    <p>
      <xsl:value-of select="."/>
    </p>
  </xsl:template>
</xsl:stylesheet>

иллюстрирует, как это можно сделать. проверьте w3schools xpath tutorial для получения дополнительной информации о выборе.

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