-2

我有一个问题。我正在 PDF 文档中写一个表格。我得到了所有正确的值,除了一个。

我从 XML 中获取一个值,例如调用它然后我需要在同一个 XML 文档中找到该名称,并从它出现的其他位置获取另一个值:

查看这个示例 XML 文档:

               </Comment>
                   (...)




                  <Comment>
                  </Comment>

所以我在里面写了NAME

需要保存该值,在 Tset 节点中找到它,并在 xsl 代码中的 State、Program name 和 Tool Name 之后写入 ToolAddr 值。

我的 xsl 显示名称并希望下一个单元格按名称显示大小查找:

我需要这个,因为 Tset 是所有工具的列表,并且在加工中我使用的工具不是正常顺序,并且可能需要多次使用工具的工具地址...

帮助!!!

4

1 回答 1

1

因为这个问题有点模糊,所以很难给出一个准确的答案,但听起来你可以使用xsl:key来查找你想要的值(或值)。

如果您想查找代码元素但它们的产品/名称,您可以定义一个键,如下所示:

<xsl:key name="lookupcode" match="code" use="following-sibling::product[1]/Name" />

因此,这与代码元素匹配,但允许通过其后的第一个产品元素的“名称”来查找它们。(注意,如果您实际使用命名空间,请记住将相关前缀放在 xxx 之前)。

然后,例如,要使用此键查找“asdf”值的代码,您可以这样做

<xsl:value-of select="key('lookupcode', 'asdf')" />

在一个稍微更实际的例子中,如果你想在zzz下查找NAME元素的代码,你的代码可能看起来像这样:

<xsl:for-each select="zzz/NAME">
    Name: <xsl:value-of select="." />
    code: <xsl:value-of select="key('lookupcode', .)" />
</xsl:for-each>

在一个稍微更实际的例子中,这里是一个输出 HTML 表格的简单例子。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output omit-xml-declaration="yes" indent="yes" />

   <xsl:key name="lookupcode" match="code" use="following-sibling::product[1]/Name" />

   <xsl:template match="yyyy">
      <table>
         <xsl:for-each select="zzz/Name">
            <tr> 
               <td><xsl:value-of select="." /></td>
               <td><xsl:value-of select="following-sibling::DATE[1]" /></td>
               <td><xsl:value-of select="key('lookupcode', .)" /></td>
            </tr>
         </xsl:for-each>
      </table>
   </xsl:template>
</xsl:stylesheet>

这应该很容易转换为输出 xsl:fo。“tr”元素对应于“fo:table-row”,“td”元素对应于“fo:table-cell”。

于 2013-11-28T23:31:57.967 回答