2016-01-01 3 views
2

Мой вопрос об отображении в направлениях узел шаг как в конце с жирным шрифтом, так и с некоторой информацией вместо тегов «скорость, время и температура».Как написать таблицу стилей для вложенного узла Xml с атрибутами?

XML данных Пример

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="temp.xsl"?> 
<records> 
    <record> 
     <title>Text for title</title> 
     <category>Text for category</category> 
     <info>Text for info</info> 
     <author>Text for author</author> 
     <directions> 
      <step>Text for simple first step</step> 
      <step>Text for complex second step with <time type="seconds">5</time> and <velocity type="clockwise">3</velocity></step> 
      <step>Text for complex third step with <time type="minute">3</time> <temperature type="celsius">50</temperature> <velocity type="wheat">1</velocity> </step> 
      <step>Text for medium fourth step with <temperature type="celsius">50</temperature> and nothing more</step> 
     </directions> 
     <notes> 
      <note>Text for first note</note> 
      <note>Text for second note</note> 
     </notes> 
    </record> 
</records> 

temp.xsl

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <html> 
     <body> 
      <xsl:apply-templates/> 
     </body> 
    </html> 
</xsl:template> 
<xsl:template match="record"> 
    <xsl:apply-templates select="category"/> 
    <p> 
     <xsl:apply-templates select="title"/> 
     <xsl:apply-templates select="info"/> 
     <xsl:apply-templates select="author"/> 
    </p> 
    <h3>Directions</h3> 
    <p> 
     <ul> 
      <xsl:apply-templates select="directions"/> 
     </ul> 
    </p> 
    <h3>Notes</h3> 
    <p> 
     <ul> 
      <xsl:apply-templates select="notes"/> 
     </ul> 
    </p> 
</xsl:template> 
<xsl:template match="category"> 
    <h2> 
     <xsl:value-of select="."/> 
    </h2> 
</xsl:template> 
<xsl:template match="title"> 
    <h3> 
     <xsl:value-of select="."/> 
    </h3> 
</xsl:template> 
<xsl:template match="info"> 
    <xsl:value-of select="."/> 
    <br /> 
</xsl:template> 
<xsl:template match="author"> 
    Author: 
    <xsl:value-of select="."/> 
    <br /> 
</xsl:template> 
<xsl:template match="directions/step"> 
    <li> 
     <xsl:apply-templates select="time"/> 
     <xsl:value-of select="."/> 
    </li> 
</xsl:template> 
<xsl:template match="time"> 
    <b>time: 
     <xsl:value-of select="."/> 
    </b> 
</xsl:template> 
<xsl:template match="notes/note"> 
    <li> 
     <xsl:value-of select="."/> 
    </li> 
</xsl:template> 

Ожидаемый результат в HTML:

Текст для категории

Текст для заголовка

Текст для информации

  • Автор: Текст для автора

Схема проезда

  • Текст для простого первого шага
  • Текста для комплексной второй стадии с 5 секундами и Скоростью 5 по часовой стрелке
  • Текста для комплексной третьей стадии с 3 минут и 50 ° CСкорость 1 пшеница
  • Текста для среды четвёртого не шаг с 50 ° C и ничего более

Примечания

  • Текст для первой ноты
  • Текст для второй ноты

ответ

3

Изменить шаблон соответствия directions/step к:

<xsl:template match="directions/step"> 
    <li> 
     <xsl:apply-templates/> 
    </li> 
</xsl:template> 

Затем добавить отдельные шаблоны для обработки time, velocity и temperature:

<xsl:template match="time"> 
    <b> 
     <xsl:value-of select="."/> 
     <xsl:text> </xsl:text> 
     <xsl:value-of select="@type"/> 
    </b> 
</xsl:template> 

<xsl:template match="velocity"> 
    <b> 
     <xsl:text>Speed </xsl:text> 
     <xsl:value-of select="."/> 
     <xsl:text> </xsl:text> 
     <xsl:value-of select="@type"/> 
    </b> 
</xsl:template> 

<xsl:template match="temperature"> 
    <b> 
     <xsl:value-of select="."/> 
     <xsl:text>° </xsl:text> 
     <xsl:value-of select="translate(substring(@type, 1, 1), 'cfk', 'CFK')"/> 
    </b> 
</xsl:template> 

Таким образом, текстовые узлы, братья и сестры из трех вышеперечисленных, также будут обработаны.

+0

спасибо, это хорошо работает! soo simple soo мощный – itom

Смежные вопросы