У меня есть XML-документ, как показано ниже,
<chapter xmlns:xi="http://www.w3.org/2001/XInclude" xml:id="chapter1">
<title>First chapter</title>
<section xml:id="section1">
<imageobject>
<imagedata fileref="images/image1.jpg"/>
</imageobject>
<imageobject>
<imagedata fileref="images/image5.jpg"/>
</imageobject>
</section>
<chapter xmlns:xi="http://www.w3.org/2001/XInclude" xml:id="chapter2" xml:base="../foder1/section2.xml">
<section xml:id="section2">
<imageobject>
<imagedata fileref="images/image2.jpg"/>
</imageobject>
<imageobject>
<imagedata fileref="images/image3.jpg"/>
</imageobject>
</section>
</chapter>
<chapter xmlns:xi="http://www.w3.org/2001/XInclude" xml:id="chapter3" xml:base="../folder3/section3.xml">
<section xml:id="section3">
<imageobject>
<imagedata fileref="images/image4.jpg"/>
</imageobject>
</section>
</chapter>
</chapter>
Как и в файле, в каждом включенном файле есть относительные пути к изображениям. Я хочу получить абсолютный путь к изображению. Для этого я собираюсь объединить значение xml:base каждой главы с относительными путями изображений в этой главе. Затем я могу получить все абсолютные пути к изображениям в каждой главе. Для этого я использовал следующий файл XSLT 1.o.
<xsl:template match="/">
<imagepaths>
<xsl:for-each select="chapter/chapter">
<basepath>
<xsl:value-of select="@xml:base"/>
</basepath>
</xsl:for-each>
<xsl:apply-templates select="*" />
</image-paths>
</xsl:template>
<xsl:template match="*">
<xsl:apply-templates select="*" />
</xsl:template>
<xsl:template match="imagedata">
<relativepath>
<xsl:value-of select="@fileref" />
</realtivepath>
</xsl:template>
</xsl:stylesheet>
Но это дает все значения xml:base и относительные пути отдельно. Он не обеспечивает никакого сопоставления между значением xml:base каждой главы и относительными путями в этой главе. Я хочу иметь сопоставление между значением xml:base и всеми относительными путями в этой главе. Как я должен это отображение делать? Я думаю, что, имея вывод, как показано ниже, я могу выполнить сопоставление и получить абсолютный путь к изображениям. Пожалуйста, помогите мне получить следующий результат с моим XSLT. С его помощью я могу получить доступ ко всем изображениям в разделе 1 по «основному относительному пути» и изображениям раздела 2, раздела 3 по узлам базового пути и относительного пути.
<Imagedata>
<mainrelativepath>images/image1.jpg</mainrelativepath>
<mainrelativepath>images/image5.jpg</mainrelativepath>
<chapter>
<basepath>../foder1/section2.xml</basepath>
<relativepath>images/image2.jpg</relativepath>
<relativepath>images/image3.jpg</relativepath>
</chapter>
<chapter>
<basepath>../foder3/section3.xml</basepath>
<relativepath>images/image4.jpg</relativepath>
</chapter>
Заранее спасибо..!!