如何使用xsl将作为值传递的xml标记的值引用到另一个xml

时间:2014-12-16 10:39:17

标签: xml xslt

我有一个像这样的XML:

<Root>
    <Content>
        <Paragraph>
            <Image reference="folder-1/folder-2/imagefile.xml"/>
        </Paragraph>
    </Content>
</Root>

在引用&#34;文件夹-1 /文件夹-2 / imagefile.xml&#34;中,我将图像文件的路径作为xml标记的值。

如何访问图像文件并将路径作为值传递给标记的src属性?

我尝试了Read properties file or a text file in xsl中发布的解决方案,但它没有用。有没有其他办法可以做到这一点? 欢迎任何帮助。感谢所有提前。

编辑:

imagefile.xml包含以下代码:

<Container>
    <Element>
        <ImagePath>
            folder/folder/imagename.jpg
        </ImagePath>
        <AltImage>
            folder/folder/altimage.jpg
        </AltImage>
    </Element>
</Container>

当我的意思是解决方案不起作用时,我的意思是html输出中的img标记的src属性值为空,如下所示:<img src="" alt=""></img>

我使用的XSL模板是这样的:

<xsl:template match="Image">
    <img src="{./Container/Element/ImagePath}"/>
</xsl:template>

我希望像这样的图像标签

<img src = "folder/folder/imagename.jpg"/>

但它是空的。在Firefox中,我看到一个图像损坏的缩略图,有点像没有图像时得到的缩略图。

1 个答案:

答案 0 :(得分:2)

希望这有帮助

  <xsl:template match="/">
    <good>
      <xsl:variable name="secondData" select="document(Root/Content/Paragraph/Image/@reference)"/>
      <img>
        <xsl:attribute name="src">
          <xsl:value-of select="$secondData//AltImage"/>
        </xsl:attribute>
      </img>
    </good>
  </xsl:template>

唯一重要的是“imagefile.xml”文件应该在同一个目录中,你的源或第一个xml是!! 我使用了.NET自己的XslCompiledTransform,解析器在源xml所在的文件夹中查找。