【问题标题】:How to show the xsl-foreach data on single fo:table-cell?如何在单个 fo:table-cell 上显示 xsl-foreach 数据?
【发布时间】:2016-07-14 07:18:51
【问题描述】:

我有一个 xml 文件来使用 xsl-fo 模板语言过滤数据。我的 XML:

 <root>
<name>shyam</name>
<friend>
    <name>Abc</name>
    <phNo>90909090909</phNo>
    <age>32</age>
    <closefriends>
        <names>test123</names>
    </closefriends>
</friend>
<friend>
    <name>Xyz</name>
    <phNo>32323232323</phNo>
    <age>44</age>
    <closefriends>
        <names>test345</names>
    </closefriends>
</friend>
</root>

我想获取名称和名称值并将其显示在 xsl-fo 模板中的某个表格单元格上。

我的 XSL-FO 模板:

<?xml version="1.0" encoding="iso-8859-1"?>

    <fo:page-sequence master-reference="my-page">
      <fo:flow flow-name="xsl-region-body">
        <fo:block>Hello,
          <xsl:value-of select="name" />!</fo:block>
        <fo:block>
          <fo:table>
            <fo:table-body>
              <fo:table-row>
                <fo:table-cell border="solid 1px black" text-align="center" font-weight="bold">
                  <fo:block>
                    No.
                  </fo:block>
                </fo:table-cell>
                <fo:table-cell border="solid 1px black" text-align="center" font-weight="bold">
                  <fo:block>
                    Name
                  </fo:block>
                </fo:table-cell>
                <fo:table-cell border="solid 1px black" text-align="center" font-weight="bold">
                  <fo:block>
                    Phone Number
                  </fo:block>
                </fo:table-cell>
              </fo:table-row>
              <xsl:for-each select="./friend">
                <xsl:for-each select="./closefriends">
                  <fo:table-row>
                    <fo:table-cell border="solid 1px black" text-align="center">
                      <fo:block>
                        <xsl:value-of select="position()" />
                      </fo:block>
                    </fo:table-cell>
                    <fo:table-cell border="solid 1px black" text-align="center">
                      <fo:block>
                        <xsl:value-of select="name" />
                        <xsl:value-of select="names" />
                      </fo:block>
                    </fo:table-cell>
                    <fo:table-cell border="solid 1px black" text-align="center">
                      <fo:block>
                        <xsl:value-of select="phNo" />
                      </fo:block>
                    </fo:table-cell>
                  </fo:table-row>
                </xsl:for-each>
              </xsl:for-each>
            </fo:table-body>
          </fo:table>
        </fo:block>
      </fo:flow>
    </fo:page-sequence>
  </fo:root>
</xsl:template>

我无法获取姓名值,只能获取密友-->姓名。需要获取名称以及同一张表 td 上的名称。

感谢任何帮助..谢谢

【问题讨论】:

  • 您可以删除./ 而不是select="./friend",直接使用select="friend"./closefriends 也是如此。长解释是两者都是相对于上下文节点进行评估的,但./friendself::node()/child::friend 的简写,friendchild::friend 的简写。额外的self::node() 不会在此处添加任何内容。

标签: xml xslt xsl-fo


【解决方案1】:

嗯,你需要用&lt;xsl:value-of select="../name" /&gt; 选择父母的名字,而不是&lt;xsl:value-of select="name" /&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 2020-11-18
    相关资源
    最近更新 更多