获取 XSL、XML 中相同名称的 value-of

发布于 2024-10-08 00:52:59 字数 533 浏览 3 评论 0原文

玩这个有一段时间了... 我有一个 xml 文件,其中包含以下几行

<image size="small">image_small.jpg</image>
<image size="medium">image_medium.jpg</image>
<image size="large">image_large.jpg</image>

关于如何获取中等 url 的任何想法。

目前我有...但它没有起到作用

<tr>
<td><img><xsl:attribute name="src">
          <xsl:value-of select="image/@size[@size=medium]" />
         </xsl:attribute>
    </img>
</td>
</tr>

提前致谢

Been toying with this for some time...
I have an xml file with the following lines

<image size="small">image_small.jpg</image>
<image size="medium">image_medium.jpg</image>
<image size="large">image_large.jpg</image>

ANy ideas on how I can just get the medium url for example.

currently I have... but its not doing the trick

<tr>
<td><img><xsl:attribute name="src">
          <xsl:value-of select="image/@size[@size=medium]" />
         </xsl:attribute>
    </img>
</td>
</tr>

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

灯角 2024-10-15 00:52:59

你的问题没有很好地定义,因为我们没有你的整个 XSLT 也没有所需的输出,但我会尝试一下:

如果你使用 for 循环来迭代不同的图像,你需要设置你的对循环本身的约束,而不是对循环内容的约束。

如果将示例代码放入 xsl:for-each 中,它将迭代每个图像,但仅在 image 时填充 @src 属性。其中 @size="medium" 是当前节点。这将为您提供三个表行,其中包含三个图像,但只有一个图像具有有效的 @src 属性。

相反,更改您的 xsl:for-each (或使用 xsl:apply-templates) 仅使用 @size="medium" 迭代图像:

<!-- This will only iterate over the medium sized images. -->
<xsl:for-each select="image[@size='medium']">
  <tr>
    <td>
      <img src="{.}"/>
    </td>
  </tr>
</xsl:for-each>

另一个提示:而不是使用 xsl:attribute 使用 属性值模板

Your question isn't very well defined since we don't have your whole XSLT nor the desired output, but I'll give it a try:

If you are using a for-loop to iterate over the different images you need to set your constraints on the loop itself, not the content of the loop.

If you put your example code inside a xsl:for-each it will iterate over every image but only fill the @src attribute when the image with @size="medium" is the current node. That would give you three table rows with three images but only one image with a valid @src attribute.

Instead change your xsl:for-each (or use xsl:apply-templates) to only iterate over your images with @size="medium":

<!-- This will only iterate over the medium sized images. -->
<xsl:for-each select="image[@size='medium']">
  <tr>
    <td>
      <img src="{.}"/>
    </td>
  </tr>
</xsl:for-each>

Another tip: instead of using xsl:attribute use an attribute value template.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文