У меня есть список имен фигур и информации о ширине и высоте в отдельном XML-файле,
Мне нужно сопоставить имя фигуры в исходном XML-файле и вставить информацию о ширине и высоте в качестве атрибута в исходный XML-файл.
здесь исходный XML-файл ..
<graphic name="sample.jpg" align="center"/>
ожидаемый выходной файл xml
<graphic name="sample.jpg" width="100" depth="200" align="center"/>
Измерение фигуры xml
<figure>
<name>sample.jpg</name>
<width>100</width>
<height>200</height>
</figure>
Я сохранил значение атрибута имени исходного файла в $ names. И я сохранил значение атрибута имени файла измерения фигуры в '$ figname'.
мой xsl скрипт
<xsl:for-each select="@name">
<xsl:if test="$figname=$name">
<xsl:attribute name="width"><xsl:value-of select="document('figure.xml')/figure/width"/></xsl:attribute>
<xsl:attribute name="depth"><xsl:value-of select="document('figure.xml')/figure/height"/></xsl:attribute>
</xsl:if>
</xsl:for-each>
Это работает только в первый раз, а не для всех. У меня есть почти более 100 изображений. для всех изображений мне нужны значения ширины и высоты. мои скрипты работают только первое значение. как выбрать значение all?
пожалуйста, предложите мне ..
С наилучшими пожеланиями,
Antony
----------------------------------------------- --------------------------------------------
Извините, я использовал ваши сценарии, но я не могу получить точный вывод, который мне требуется.
Я предоставил здесь все подробности для вашего рассмотрения.
ВХОД XML:
<figure>
<title>Earliest Discoveries</title>
<graphic name="luc26959_0101.eps" align="center"/>
<caption>These lithographs of teeth of Iguanodon are from Mantell original 1825 article.</caption>
</figure>
ВВОДНАЯ РИСУНОК XML:
<?xml version="1.0"?>
<figuregroup>
<figure><name>luc26959_0101.eps</name><width>500</width><height>347</height></figure>
<figure><name>luc26959_0102.eps</name><width>500</width><height>352</height></figure>
<figure><name>luc26959_0103.eps</name><width>500</width><height>348</height></figure>
<figure><name>luc26959_0104.eps</name><width>445</width><height>263</height></figure>
<figure><name>luc26959_0105.eps</name><width>217</width><height>250</height></figure>
</figuregroup>
ТРАНСФОРМАЦИЯ XSL КОД:
<xsl:template match="graphic">
<xsl:variable name="names">
<xsl:value-of select="substring-before(@name, '.')"/>
</xsl:variable>
<xsl:for-each select="//graphic">
<imageobject>
<imagedata>
<xsl:attribute name="fileref">graphics/<xsl:value-of select="$names"/>.jpg</xsl:attribute>
<xsl:attribute name="width"><xsl:value-of select="document('../input/fig.xml')/figuregroup/figure[name=$names]/width"/></xsl:attribute>
<xsl:attribute name="depth"><xsl:value-of select="document('../input/fig.xml')/figuregroup/figure[name=$names]/height"/></xsl:attribute>
<xsl:apply-templates/>
</imagedata>
</imageobject>
</xsl:for-each>
</xsl:template>
ТЕКУЩИЙ ВЫХОД XML:
<figure>
<title>Earliest Discoveries</title>
<mediaobject>
<imageobject><imagedata fileref="graphics/luc26959_0101.jpg" width="" depth=""/></imageobject>
<imageobject><imagedata fileref="graphics/luc26959_0101.jpg" width="" depth=""/></imageobject>
<imageobject><imagedata fileref="graphics/luc26959_0101.jpg" width="" depth=""/></imageobject>
<imageobject><imagedata fileref="graphics/luc26959_0101.jpg" width="" depth=""/></imageobject>
<imageobject><imagedata fileref="graphics/luc26959_0101.jpg" width="" depth=""/></imageobject>
<caption><para>These lithographs of teeth of <emphasis>Iguanodon</emphasis> are from Mantell's original 1825 article.</para><para/></caption>
</mediaobject>
</figure>
ТРЕБУЕМЫЙ ВЫХОД:
<figure>
<title>Earliest Discoveries</title>
<mediaobject>
<imageobject><imagedata fileref="graphics/luc26959_0101.jpg" width="500" depth="347"/></imageobject>
<caption><para>These lithographs of teeth of <emphasis>Iguanodon</emphasis> are from Mantell's original 1825 article.</para><para/></caption>
</mediaobject>
</figure>
Надеюсь, я дал четкое представление о своем требовании, я также пытался без "для каждого", когда я даю без "для каждого", я не получаю никакого выходного элемента повторно, только один раз я получаю это, все еще атрибуты ширины и глубины пустые.
Я не знаю, как правильно заполнить этот атрибут после использования вашего кода.
Пожалуйста, помогите мне ..
Спасибо и С уважением,
Antony