2015-07-31 3 views
0

У меня есть два изображения в моей XML:Ассоциированные подписей с изображениями

<?xml version="1.0" encoding="UTF-8"?> 
<document xmlns:xlink="http://www.w3.org/1999/xlink"> 

<imageGroup> 
    <image xlink:href="mums528-i001-001.png"/> 
    <caption>page 1</caption> 
</imageGroup> 
<imageGroup> 
    <image xlink:href="mums528-i001-002.png"/> 
    <caption>page 2</caption> 
</imageGroup> 

<description> 
    <title>Letter from Waldemar Schultze to Jennie Schultze</title> 
    <creator type="author"> 
     <name type="personal">Schultze, Waldemar</name> 
    </creator> 
    <date>1943-06-30</date> 
    <source>Special Collections and University Archives, W. E. B. Du Bois Library, 
     University of Massachusetts Amherst</source> 
    <citation>Robert and Waldemar Schultze Papers (MS 528). Special Collections and 
     University Archives, W.E.B. Du Bois Library, University of 
     Massachusetts Amherst.</citation> 
</description> 
<text> 
     <header type="letterhead"> 
      <organization>Unites States Disciplinary Barracks</organization> 
      <location>Fort Leavenworth, Kansas</location> 
      <date format="M/DD/YY">6/30/43</date> 
      <recipient> 
       <name type="personal">Mrs. W.J. Schultze</name> 
       <address>875 Richmond Av., Buffalo, N.Y.</address> 
       <relation>Mother</relation> 
      </recipient> 
     </header> 
    </text> 
</document> 

Я хочу, чтобы мой XSL поместить каждый заголовок с соответствующим изображением, вместо того, чтобы изображения появляются вместе, то заголовки. Это мой XSL:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml"> 

<xsl:output method="xml" indent="yes" /> 
<xsl:template match="/"> 
    <html> 
     <head> 
      <link rel="stylesheet" type="text/css" href="letter.css"/> 
      <title>Letter</title> 
     </head> 
     <body> 
      <div> 
       <xsl:apply-templates/> 
      </div> 
     </body> 
    </html> 
</xsl:template> 
<xsl:template match="document/description"> 
    <h2><xsl:value-of select="title"/></h2> 
    <h3>Description</h3> 
    <dl> 
     <dt><span class="description">Author:&#160;</span></dt> 
     <dd> 
      <xsl:value-of select="creator/name"/> 
     </dd> 
     <dt><span class="description">Date (YYYY-MM-DD):&#160;</span></dt> 
     <dd> 
      <xsl:value-of select="date"/> 
     </dd> 
     <dt><span class="description">Source:&#160;</span></dt> 
     <dd> 
      <xsl:value-of select="source"/> 
     </dd> 
     <dt><span class="description">Pages:&#160;</span></dt> 
     <dd> 
      <xsl:if test="//pb"> 
       <xsl:value-of select="//pb[not(following::pb)]/@n"/> 
      </xsl:if> 
     </dd> 
    </dl> 
</xsl:template> 
<xsl:template match="document/text/header"> 
    <h3>Text</h3> 
    <xsl:if test="//imageGroup"> 
     <xsl:for-each select="//imageGroup"> 
      <p><xsl:value-of select="caption"/></p> 
      <img src="{image/@xlink:href}"/> 
     </xsl:for-each> 
    </xsl:if> 
    <span class="text"><p><span class="official"><xsl:value-of select="organization"/></span></p> 
    <p><span class="official"><xsl:value-of select="location"/></span></p> 
    <p><xsl:value-of select="date"/></p> 
    <p><span class="official">to whom:&#160;</span><xsl:value-of select="recipient/name"/></p> 
    <p><span class="official">address:&#160;</span><xsl:value-of select="recipient/address"/></p> 
    <p><span class="official">relation:&#160;</span><xsl:value-of select="recipient/relation"/></p></span> 
</xsl:template> 
<xsl:template match="document/text/body"> 
    <span class="text"><p><xsl:value-of select="salutation"/></p> 
    <xsl:call-template name="lines"/> 
    <p><xsl:value-of select="valediction"/></p></span> 
</xsl:template> 
<xsl:template name="lines"> 
     <xsl:for-each select="//p"> 
      <p><xsl:value-of select="."/></p> 
     </xsl:for-each> 
     <xsl:for-each select="//line"> 
      <p><xsl:value-of select="."/></p> 
     </xsl:for-each> 
</xsl:template> 

Как я могу поместить изображения и надписи внутри одной и той же XSL для-каждого оператора?

+0

Моя проблема сейчас в том, что титры также отображаются в верхней части страницы. – Misenus

ответ

0

Трудно ответить на ваш вопрос без контекста, как XML, так и XSLT. Возможно, это может сработать для вас:

<xsl:for-each select="//imageGroup"> 
    <img src="{image/@xlink:href}"/> 
    <p><xsl:value-of select="caption"/></p> 
</xsl:for-each> 
+0

Ваше предложение действительно сгруппировало изображения с их подписками, но теперь заголовки также отображаются в верхней части страницы. Я добавил полный xml и xsl, если это поможет. – Misenus

+0

Это потому, что у вас нет шаблона, соответствующего 'imageGroup', хотя вы * * применяете к нему шаблоны. Один из способов исправить это - добавить пустой шаблон: '' –

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