如何使 xsl 仅显示来自 xml 的 images/captions

How to make xsl show only images/captions from xml

我的 xml 中有两张图片:

<?xml version="1.0" encoding="UTF-8"?>

<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">

        <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>

        <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>
    <body>
        <salutation>Dear Mother,</salutation>
        <p><line>This is the first letter I have had</line> 
            <line>an opportunity to write you since leaving Fort</line> 
            <line>Jay, and I know you must be anxious to hear from me.</line></p>
        <p><line>Bob and I are both feeling as well as</line> 
            <line>can be expected considering our present cir-</line>
            <line>cumstances. We both have high blood</line>
            <line>pressure, mine has been 160/100 for the past</line> 
            <line>2 days, and Bob's 158/96, but my sinus</line>
            <line>infection has not caused me quite so much</line> 
            <line>trouble since leaving N.Y. State. I believe</line> 
            <line>the air is dryer here and is responsible</line> 
            <line>for any alleviation that has taken place.</line></p>
        <p><line>While a prisoner here remains in their</line> 
            <line>so-called 1st grade, he is able to write</line> 
            <line>twice a week, in second grade once a week,</line> 
            <line>and in third grade once a month. These</line> 
            <line>grades refer to classifications that ostensibly</line>
            <line>are for conduct while here.  It is quite possible</line> 
            <line>to lose a conduct rating, as I understand it,</line> 
            <line>by not having a perpetually rusting tin cup polished</line> 
            <pb n="2"/>
            <line>brightly for daily inspection, although the tin plating long ago dis-</line>
            <line>appeared and the cup is rusty again within 2 hours after wetting.</line></p>
        <p><line>The food here is good and is well-cooked,</line> 
            <line>with one exception, the gravy, which is nothing but</line> 
            <line>flour, water, and bacon grease, Strangely enough, how-</line>
            <line>ever, no condiments, not even salt, are provided on</line> 
            <line>the table, to the detriment of otherwise very good</line> 
            <line>meals.  While meat here is unrationed and is plentiful,</line> 
            <line>toilet paper; believe it or not, is rationed.  A</line> 
            <line>5¢ roll must last a prisoner 45 days, or else -- ?</line>
            <line>Perhaps, however, a prisoner can purchase additional</line> 
            <line>if it should be necessary.</line></p>
        <p><line>Please see that my subscriptions are transferred</line> 
            <line>here as soon as possible from Fort Jay. Give Florence</line> 
            <line>and Helen my regards, and thank Joe for his</line> 
            <line>efforts in my behalf in managing my business.</line> 
            <line>Find out from Joe how tube deliveries are at the</line> 
            <line>present time, first to satisfy my curiosity; and</line> 
            <line>also let me know if you are receiving your</line>
            <line>remittance regularly from him.  If he is not</line> 
            <line>taking care of your support in accordance with</line> 
            <line>the instructions I left him, I wish to know it,</line> 
            <line>so I can write, and correct the matter.</line>  
            <line>You can tell Joe to subscribe to Electronics</line> 
            <line>magazine for me and send it to this address</line>
            <line>direct from the publisher.  He should also have a copy</line> 
            <line>of Palmer's "Calculus for Home Study," sent me by the publisher,</line> 
            <line>whose name he can obtain from Ulbrichs.  In future letters I'll</line> 
            <line>copy the "Prisoner's Handbook" issued here, and the</line> 
            <line>contents of the detached letter form stub.</line> 
        </p>
        <valediction>Love, Waldemar</valediction>
    </body>
</text>

我想转换 xml 以便仅显示图像及其说明。这是我的 xsl:

<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="//imageGroup">
    <xsl:if test="//imageGroup">
        <div class="image">
            <xsl:for-each select="//imageGroup">
                <img src="{image/@xlink:href}"/>
                <span class="caption"><xsl:value-of select="caption"/></span>
            </xsl:for-each>
        </div>
    </xsl:if>
</xsl:template>

问题是,我的输出仍然显示所有文本,而且我的图像加倍了。如何在不更改 xml?

中的任何内容的情况下修复它

<xsl:apply-templates/> 替换为 <xsl:apply-templates select="//imageGroup"/>,那么您的这些元素的模板当然不应该使用任何 for-each,而是简单地显示每个图像,例如

<xsl:template match="imageGroup">
  <img src="{image/@xlink:href}"/>
  <span class="caption"><xsl:value-of select="caption"/></span>
</xsl:template>