2017-02-07 2 views
0

Мой XML является, как показано ниже:Отображение изображения с использованием XML и XSLT

<?xml version="1.0" encoding="ISO-8859-1"?>  
<chapter id="ch01"> 
    <sect1> 
     <title>Wattage</title> 
     <para>Paragraph1</para> 
     <para>Paragraph2</para> 
     <para><figure> 
       <caption> 
        <para> 
        <i>Sample image caption</i></para> 
       </caption> 
       <img src="myimagepath\cover_front.jpg"/> 
      </figure> 
     </para> 
    </sect1> 
</chapter> 

Я возникли проблемы при отображении изображения на HTML странице, где я оказывающего мой XML с помощью XSLT (через C# ASPX страницы).

Мой XSLT выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
     <html> 
      <body> 
       <h2>My Book</h2> 
       <xsl:apply-templates select="chapter/sect1" /> 
      </body> 
     </html> 
    </xsl:template> 
    <xsl:template match="chapter/sect1"> 
     <xsl:apply-templates select="title" /> 
     <xsl:apply-templates select="para/figure" /> 
     <br /> 
    </xsl:template> 
    <xsl:template match="title"> 
     <b><span style="font-size=22px;"> 
       <xsl:value-of select="." /> 
      </span> 
     </b> 
     <br /> 
    </xsl:template> 
    <xsl:template match="para/figure"> 
     <xsl:element name="img"> 
      <xsl:attribute name="src"> 
       <xsl:value-of select="." /> 
      </xsl:attribute> 
     </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 

Мое изображение не отображается с помощью описанной выше XSLT. Кто-нибудь может помочь. Я новичок в XSLT.

+1

Вы работаете на стороне сервера преобразования или на стороне клиента? Являются ли пути изображения относительно URL-адреса, который видит клиент, или XSLT-файл? –

+0

Вы уверены, что ваш XML хорошо структурирован? Вы намеренно делаете это: Пункт 1 ? – Rob

+0

Как предложил @Rob, я заполнил ваш входной XML, добавив два закрывающих тега ''. Помните об этом, если проверяете свой ответ. – zx485

ответ

1

Точка, в которой вы изображаете пара/фигуру, не совсем то, что вы думаете, точка, в которой вы выбираете «.». для исходного изображения на самом деле должно оказывать все:

<caption><para><i>Sample image caption</i></para></caption> 
<img src="myimagepath\cover_front.jpg"/> 

Попробуйте изменить этот шаблон: до:

<xsl:template match="para/figure"> 
    <img src="{img/@src}" /> 
</xsl:template> 

(который работает с памятью) так:

  • пара/фигура имеет два дочерних элемента caption и img
  • Итак, мы хотим вывести тег «img» (что имя одно и то же случайно) с атрибутом «src» (опять-таки случайным), и мы хотим, чтобы e src - атрибут src (атрибут @ ==) элемента img текущего узла. Кудрявые фигурные скобки позволяют магии помещать значение inline в тег, который вы визуализируете.
+0

Огромное вам спасибо, Murph. отображает изображение сейчас на моей странице aspx. – Awadesh

+0

Для вопроса Rowland, я делаю преобразование XSLT на стороне сервера через XML .Net control. Мой путь к изображению относительно URL. Мой вопрос в том, какой будет код, когда мой путь к образцу относительно XSLT-файла? Не могли бы вы объяснить эту концепцию. Большое спасибо. – Awadesh

+0

В моем XML есть несколько тегов para для одного родительского тега. – Awadesh

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